P
Patrick_GAST
Gast
Hallo
ich versuche mir gerade RMI näher zu bringen 🙂
Dazu habe ich ein kleines Programm geschrieben.
rmiregistry läuft.
Leider kommt beim starten des Servers immer folgende Exception:
Und nun hier der Code zu diesem Fehler
Ich hab jetzt nicht überprüft ob File Serialisierbar ist aber der Fehler kommt auch wenn es Ausdokumentiert ist
Interface:
Implementierung
Und das Aufrufende Codeteil
In der zweiten Zeilen wird dann die Exception geworfen. Ich habe sogar schonmal probiert die _Stub Klasse selber mit rmic.exe zu kompilieren, obwohl das seit Java 5 ja nicht mehr nötig ist, und habe aber die den gleichen Fehler bzw ähnlichen: ClassNotFound bekommen.
Die codebase muss man ja hier in diesem Fall nicht setzen weil der Server die Klasse kennt oder?
Zur Verdeutlichung:
Der Fehler tritt auf Serverseite auf, ein Client läuft nicht
Muss man vielleicht noch irgendein Flag setzen?
Peace
ich versuche mir gerade RMI näher zu bringen 🙂
Dazu habe ich ein kleines Programm geschrieben.
rmiregistry läuft.
Leider kommt beim starten des Servers immer folgende Exception:
Code:
java.rmi.StubNotFoundException: Stub class not found: de.logic.server.TransferDataBeanImpl_Stub; nested exception is:
java.lang.ClassNotFoundException: de.logic.server.TransferDataBeanImpl_Stub
at sun.rmi.server.Util.createStub(Unknown Source)
at sun.rmi.server.Util.createProxy(Unknown Source)
at sun.rmi.server.UnicastServerRef.exportObject(Unknown Source)
at java.rmi.server.UnicastRemoteObject.exportObject(Unknown Source)
at java.rmi.server.UnicastRemoteObject.exportObject(Unknown Source)
at de.logic.server.DownloadServer.<init>(DownloadServer.java:24)
at de.Main.main(Main.java:18)
Caused by: java.lang.ClassNotFoundException: de.logic.server.TransferDataBeanImpl_Stub
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Unknown Source)
... 7 more
Und nun hier der Code zu diesem Fehler
Ich hab jetzt nicht überprüft ob File Serialisierbar ist aber der Fehler kommt auch wenn es Ausdokumentiert ist
Interface:
Code:
public interface TransferDataBean extends Remote
{
public long getJobID() throws RemoteException;
public void setJobID(long jobID) throws RemoteException;
public File getDownloadFile() throws RemoteException;
public void setDownloadFile(File downloadFile) throws RemoteException;
public int add(int i, int a) throws RemoteException;
}
Implementierung
Code:
public class TransferDataBeanImpl implements TransferDataBean{
/**
*
*/
private long jobID;
private File downloadFile;
public long getJobID() {
return jobID;
}
public void setJobID(long jobID) {
this.jobID = jobID;
}
public File getDownloadFile() {
return downloadFile;
}
public void setDownloadFile(File downloadFile) {
this.downloadFile = downloadFile;
}
public int add(int i, int a) {
return i + a;
}
}
Und das Aufrufende Codeteil
Code:
TransferDataBeanImpl dataImpl = new TransferDataBeanImpl();
TransferDataBean dataInterface = (TransferDataBean)UnicastRemoteObject.exportObject(dataImpl);
Registry registry = LocateRegistry.getRegistry();
registry.rebind("TransferDataBean", dataInterface);
In der zweiten Zeilen wird dann die Exception geworfen. Ich habe sogar schonmal probiert die _Stub Klasse selber mit rmic.exe zu kompilieren, obwohl das seit Java 5 ja nicht mehr nötig ist, und habe aber die den gleichen Fehler bzw ähnlichen: ClassNotFound bekommen.
Die codebase muss man ja hier in diesem Fall nicht setzen weil der Server die Klasse kennt oder?
Zur Verdeutlichung:
Der Fehler tritt auf Serverseite auf, ein Client läuft nicht
Muss man vielleicht noch irgendein Flag setzen?
Peace