RMI ClassNotFoundException bei Stub-Erzeugung

lafilia

Mitglied
Hallo,

ich baue momentan eine eigentlich ziemlich simple RMI-Anwedung, die ich zunächst auch nur lokal zum Laufen bekommen möchte.

Es tritt jedoch bereits ein Problem auf, wenn ich versuche, meinen Stub zu erzeugen und zu exportieren.

Fehlermeldung ist folgende:
Java:
java.rmi.StubNotFoundException: Stub class not found: Server.Server_Stub; nested exception is: 
	java.lang.ClassNotFoundException: Server.Server_Stub

Der entsprechende Codeteil sieht so aus:
Java:
LocateRegistry.createRegistry(Registry.REGISTRY_PORT);
IServer stub = (IServer) UnicastRemoteObject.exportObject(new Server());
Naming.rebind("Spielservice", stub);


Da ich meine Registry ja direkt über Java starte, verstehe ich nicht, warum die Klasse nicht gefunden wird.
Schließlich starte ich sie damit doch aus dem Pfad heraus, in dem sich auch meine .class-Dateien befinden, oder nicht?

Ich habe schon unendlich viele Forumsbeiträge zu diesem Thema gelesen, aber keiner löst mein Problem.

Was mich zusätzlich verwirrt: gebe ich der exportObject-Methode zusätzlich einen Port als Parameter mit, läuft das Ganze.
Dann kann ich aber meinen Client mit derselben Fehlermeldung nicht starten und außerdem verstehe ich auch einfach nicht, warum ich dann meinen Stub erzeugen kann und sonst nicht.

Vielleicht habe ich hier auch einfach eine falsche Vorstellung von der RMI-Logik. Dann wäre ich sehr dankbar dafür, wenn mir jemand erklären könnte, wo genau.
Vielen Dank für eure Hilfe, ich bin echt am verweifeln...
 

Niki

Top Contributor
möglich, das letzte mal dass ich mit rmi einen stub erzeugt habe war mit java 1.3 bzw. 1.4
bin da also nicht mehr ganz am laufenden. vielleicht komm ich noch dazu und bastel schnell mal einen rmi client/server
 

r.w.

Bekanntes Mitglied
Hallo zusammen,

um die Stub-Klassen braucht man sich nicht mehr zu kümmern.
Bei mir funktioniert es auf folgende Weise sehr gut:
(Für diesen Beitrag leicht abgeändert.)

[Java]

public static RMIServer CreateRMIServer() {
RMIServer rmi = null;
try {
LocateRegistry.createRegistry(Registry.REGISTRY_PORT);
try {
rmi = new RMIServer();
Naming.rebind("DeinServiceName", rmi);
} catch (MalformedURLException ex) {
Logger.getLogger(RMIServer.class.getName()).log(Level.SEVERE, null, ex);
} catch (RemoteException ex) {
Logger.getLogger(RMIServer.class.getName()).log(Level.SEVERE, null, ex);
}
} catch (RemoteException ex) {
Logger.getLogger(RMIServer.class.getName()).log(Level.SEVERE, null, ex);
}
return rmi;
}

[/Java]

VG ROlf
 

Ähnliche Java Themen


Oben