Guten Abend,
ich benötige mal wieder eure Hilfe.
Ich habe mich mit RMI beschäftigt und komme nicht weiter. Es geht um ein simples Programm, das ich testweise über localhost laufen lasse. Es handelt sich lediglich um ein HelloWorld. Das Problem ist, dass beim registrieren meines Remote-Objekts eine ClassNotFoundException geworfen wird. Er sagt mir, dass er den Stub nicht finden kann.
Randbedingungen:
- ich habe kein Eclipse verwendet, sondern einen nativen Texteditor
- alle Dateien (sowohl die Sourcecodes als auch die compilierten Class-Dateien befinden sich im selben Verzeichnis)
- den Stub habe ich über dem RMI-Compiler erzeugt (rmic)
Hier der Code
Das Interface:
Die Server-Komponente
//edit: achso die Exception könnt hilfreich sein
Die Client-Komponente ist egal, da der Fehler beim Starten des Servers schon auftritt. Kann mir jemand hier weiterhelfen?
Grüße
ich benötige mal wieder eure Hilfe.
Ich habe mich mit RMI beschäftigt und komme nicht weiter. Es geht um ein simples Programm, das ich testweise über localhost laufen lasse. Es handelt sich lediglich um ein HelloWorld. Das Problem ist, dass beim registrieren meines Remote-Objekts eine ClassNotFoundException geworfen wird. Er sagt mir, dass er den Stub nicht finden kann.
Randbedingungen:
- ich habe kein Eclipse verwendet, sondern einen nativen Texteditor
- alle Dateien (sowohl die Sourcecodes als auch die compilierten Class-Dateien befinden sich im selben Verzeichnis)
- den Stub habe ich über dem RMI-Compiler erzeugt (rmic)
Hier der Code
Das Interface:
Java:
import java.rmi.Remote;
import java.rmi.RemoteException;
public interface HelloWorldRMI extends Remote {
void printHelloWorld() throws RemoteException;
}
Die Server-Komponente
Java:
import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;
public class HelloWorldRMIImpl extends UnicastRemoteObject implements HelloWorldRMI {
public HelloWorldRMIImpl() throws RemoteException {}
public void printHelloWorld(){
System.out.println("Hello World");
}
public static void main(String args[])
{
try
{
HelloWorldRMIImpl remoteObject = new HelloWorldRMIImpl();
java.rmi.Naming.bind("//localhost/HelloWorld", remoteObject);
System.out.println("Server-Objekt erzeugt, erwarte Aufrufe.");
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
//edit: achso die Exception könnt hilfreich sein
java.rmi.ServerException: RemoteException occurred in server thread; nested exce
ption is:
java.rmi.UnmarshalException: error unmarshalling arguments; nested excep
tion is:
java.lang.ClassNotFoundException: HelloWorldRMIImpl_Stub
at sun.rmi.server.UnicastServerRef.oldDispatch(UnicastServerRef.java:413
)
at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:267)
at sun.rmi.transport.Transport$1.run(Transport.java:177)
at sun.rmi.transport.Transport$1.run(Transport.java:174)
at java.security.AccessController.doPrivileged(Native Method)
at sun.rmi.transport.Transport.serviceCall(Transport.java:173)
Die Client-Komponente ist egal, da der Fehler beim Starten des Servers schon auftritt. Kann mir jemand hier weiterhelfen?
Grüße
Zuletzt bearbeitet: