2010-12-28 8 views
4

Ich schrieb einen Remote-Dienst MyremoteImpl.java und folgenden Befehl nach dem kompiliert es.RMI Java erstellt keine Gerüstklasse

rmic MyRemoteImpl 

Ich habe gelernt, dass diese Methode Stub-Klasse und eine Skelett-Klasse erstellen soll, aber ich kann nur die Stub-Klasse sehen, warum ist das?

Das andere Problem, das ich nach dem Lauf rmiregistry konfrontiert Ich begann den Dienst, aber es gibt folgenden Fehler, bezweifle ich, dass ich diesen Fehler bekomme, wie ich Skelett Klasse vermisse?

java.net.MalformedURLException: invalid URL String: Remote Hello 
    at java.rmi.Naming.parseURL(Unknown Source) 
    at java.rmi.Naming.rebind(Unknown Source) 
    at RMIservice.MyRemoteImpl.main(MyRemoteImpl.java:22) 
Caused by: java.net.URISyntaxException: Illegal character in path at index 6: Remote Hello 
    at java.net.URI$Parser.fail(Unknown Source) 
    at java.net.URI$Parser.checkChars(Unknown Source) 
    at java.net.URI$Parser.parseHierarchical(Unknown Source) 
    at java.net.URI$Parser.parse(Unknown Source) 
    at java.net.URI.<init>(Unknown Source) 
    at java.rmi.Naming.intParseURL(Unknown Source) 
    ... 3 more 

Bitte helfen Sie mir, dies zu lösen, Danke im Voraus!

+0

Wenn ich mich richtig erinnere, werden Skelettklassen nicht mehr erstellt. Ihre Ausnahme scheint auf eine ungültige URL zu verweisen. Können Sie die URL, die Sie zum Herstellen einer Verbindung verwenden, posten? – npinti

+0

Vielen Dank für Ihre Antwort! endlich habe ich diese ausnahme beseitigt ... und um skelett-klassen zu erstellen, habe ich festgestellt, dass rmic -v1.1 funktionieren würde :-) –

Antwort

3

Tun Sie dies nicht. Du brauchst es nicht. Skeleton-Klassen wurden seit 1998 nicht benötigt.

+0

Vielen dank für die korrektur ... :-) –

0

Ab Rmic 1.2 erzeugt Java keine Skelletion-Klasse mehr. Neues JRMP-Protokoll, das für RMI unterstützt wird, hat die Verwendung von Skelettdateien beseitigt.

Ein Skelett für ein Remote-Objekt ist eine serverseitige JRMP-Protokoll-Entität, die über eine Methode verfügt, die Aufrufe an die tatsächliche Remote-Objektimplementierung absetzt.