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