J'avais déjà fait un post à ce sujet mais après différents tests, je ne comprends toujours pas alors je viens poster de nouveau en mettant quelques précisions :
J'ai fait un test avec le strict minimum que voici :
Tous mes fichiers sont dans le default package.
J'ai une classe Balle (j'ai pris ce nom au hasard) dans Balle.java:
l'interface implémentée est la suivante : IBalle.java :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 public class Balle extends UnicastRemoteObject implements IBalle{ protected Balle() throws RemoteException { super(); } int i; public void setI(int i) throws RemoteException { this.i=i; } public int getI() throws RemoteException { return i; } }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 public interface IBalle extends Remote { public void setI(int i) throws RemoteException; public int getI() throws RemoteException; }
Et une classe pour tester que voici (Test.java) :
Je compile, je fais mon rmic Balle, les skel et stubs sont bien générés, je lance rmiregistry, tout est ok.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 public class Test { public static void main(String[] args) { try { IBalle b = new Balle(); Naming.rebind("huhu",b); IBalle bb = (IBalle) Naming.lookup("//127.0.0.1/huhu"); } catch (RemoteException e) { e.printStackTrace(); } catch (MalformedURLException e) { e.printStackTrace(); } catch (NotBoundException e) { e.printStackTrace(); } } }
Mais lorsque je lance, j'ai l'exception suivante :
On m'a suggéré d'utiliser codebase, ce que j'ai fait de la façon suivante (le chemin est bon) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 java.rmi.ServerException: RemoteException occurred in server thread; nested exception is: java.rmi.UnmarshalException: error unmarshalling arguments; nested exception is: java.lang.ClassNotFoundException: Balle_Stub at sun.rmi.server.UnicastServerRef.oldDispatch(UnicastServerRef.java:352) at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:207) at sun.rmi.transport.Transport$1.run(Transport.java:148) at java.security.AccessController.doPrivileged(Native Method) at sun.rmi.transport.Transport.serviceCall(Transport.java:144) at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:460) at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:701) at java.lang.Thread.run(Thread.java:534) at sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(StreamRemoteCall.java:247) at sun.rmi.transport.StreamRemoteCall.executeCall(StreamRemoteCall.java:223) at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:350) at sun.rmi.registry.RegistryImpl_Stub.rebind(Unknown Source) at java.rmi.Naming.rebind(Naming.java:160) at Test.main(Test.java:24)
mais toujours là même exception.
Code : Sélectionner tout - Visualiser dans une fenêtre à part java -Djava.rmi.server.codebase=file:/C:\eclipse\workspaces\perso\teste Test
voilà, tout les éléments sont là. Je sèche totalement depuis hier. Je béni celui qui trouvera le problème ;)
merci.
Satch
Partager