Java.RMI.ServerException: RemoteException im Server-Thread aufgetreten (Ausnahme „Klasse nicht gefunden“)
Beim Versuch, einen Server mithilfe des Codes zu starten Wenn Sie das bereitgestellte Snippet verwenden, kann es sein, dass Sie auf eine Ausnahme stoßen, die besagt: „java.rmi.ServerException: RemoteException ist im Server-Thread aufgetreten; verschachtelte Ausnahme ist: java.rmi.UnmarshalException: Fehler beim Unmarshalling der Argumente; verschachtelte Ausnahme ist: java.lang.ClassNotFoundException: Interfaces.RemoteMethodIntf."
Diese Ausnahme wird ausgelöst, wenn ein Problem beim Finden der erforderlichen Klassen auf dem Server auftritt. Es gibt vier mögliche Szenarien, in denen diese Ausnahme auftreten kann:
-
Exportieren: Wenn Sie „rmic“ nicht ausführen oder die erforderlichen Schritte in der UnicastRemoteObject-Präambel überspringen, können Sie diese Ausnahme auslösen.
-
Bindung: Der Registry fehlt möglicherweise der Stub, die Remote-Schnittstelle oder eine Abhängigkeit davon Klassenpfad.
-
Nachschlagen: Der Klassenpfad des Clients verfügt möglicherweise nicht über die erforderlichen Klassen.
-
Aufrufen einer Remote-Methode: Übertragen eines Objekts mit Abwesenheit Dies kann sowohl auf eine Klasse im CLASSPATH des Servers als auch auf den Empfang eines Objekts mit einer fehlenden Klasse im CLASSPATH des Clients zurückzuführen sein Problem.
In diesem Fall handelt es sich um Szenario 2, bei dem die Registrierung die angegebene Klasse nicht finden kann. Hier sind einige mögliche Lösungen:
-
Verwenden Sie einen CLASSPATH, der JARs enthält: Starten Sie die Registrierung mit einem CLASSPATH, der die erforderlichen JARs oder Verzeichnisse enthält.
-
Erstellen Sie eine Registrierung in Ihrer Server-JVM: Verwenden Sie LocateRegistry.createRegistry(), um die zu starten Registrieren Sie sich in Ihrer Server-JVM.
-
Verwenden Sie dynamische Stubs:Verwenden Sie dynamische Stubs, wie im UnicastRemoteObject-Javadoc beschrieben. Diese Technik gleicht potenzielle Kompatibilitätsprobleme mit der Remote-Schnittstelle oder Abhängigkeiten aus.
-
Szenario (4) verhindern: Stellen Sie sicher, dass bei Objekten, die an oder vom Server übertragen werden, in keinem der CLASSPATHs Klassen fehlen.
Das obige ist der detaillierte Inhalt vonWarum erhalte ich eine \'java.rmi.ServerException: RemoteException\' in meinem Java RMI Server?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!