RMI ne trouve pas l'interface

paesportcomputing - 7 avril 2017 à 21:43 - Dernière réponse : KX 15559 Messages postés samedi 31 mai 2008Date d'inscriptionModérateurStatut 23 juin 2018 Dernière intervention
- 8 avril 2017 à 12:36
Bonjour,

J'essaye de tester la technologie RMI mais je coince sur un problème. Le serveur démarre mais pas le client.
Voici ma stacktrace :

java.rmi.UnmarshalException: error unmarshalling return; nested exception is:
java.lang.ClassNotFoundException: rmiServer.IInformation
at sun.rmi.registry.RegistryImpl_Stub.lookup(Unknown Source)
at java.rmi.Naming.lookup(Naming.java:101)
at rmiClient.LaunchRmiClient.init(LaunchRmiClient.java:53)
at rmiClient.LaunchRmiClient.<init>(LaunchRmiClient.java:23)
at launcher.Starter.start(Starter.java:36)
at com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$162(LauncherImpl.java:863)
at com.sun.javafx.application.PlatformImpl.lambda$runAndWait$175(PlatformImpl.java:326)
at com.sun.javafx.application.PlatformImpl.lambda$null$173(PlatformImpl.java:295)
at java.security.AccessController.doPrivileged(Native Method)
at com.sun.javafx.application.PlatformImpl.lambda$runLater$174(PlatformImpl.java:294)
at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95)
at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
at com.sun.glass.ui.win.WinApplication.lambda$null$148(WinApplication.java:191)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.ClassNotFoundException: rmiServer.IInformation
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)



rmiServer est mon package où se situent les classes RMI du serveur.
IInformation est mon interface qui extends Remote (coté serveur)

D'après mes recherches, il s'agirait d'un problème de CLASSPATH. Mais je ne parviens pas à résoudre le problème (je développe avec NetBeans).
Quelqu'un pourrait m'aider ?

Merci
Afficher la suite 

Votre réponse

3 réponses

KX 15559 Messages postés samedi 31 mai 2008Date d'inscriptionModérateurStatut 23 juin 2018 Dernière intervention - 7 avril 2017 à 22:04
0
Merci
Bonjour,

L'interface IInformation qui est côté serveur doit aussi être côté client pour pouvoir faire le lien sur le contrat d'implémentation.

Tu peux par exemple faire un jar commun qui ne contient que les interfaces et ajouter ce jar au classpath du client et du serveur.
Commenter la réponse de KX
paesportcomputing - 7 avril 2017 à 23:02
0
Merci
Merci pour ton aide,

Les interfaces sont bien du coté serveur et du coté client. Par contre, je n'ai pas fait de jar avec l'interface seule. Je vais essayer...
KX 15559 Messages postés samedi 31 mai 2008Date d'inscriptionModérateurStatut 23 juin 2018 Dernière intervention - 8 avril 2017 à 12:36
"Les interfaces sont bien du coté serveur et du coté client."
Il faut que ce soit exactement la même, pas juste un copier-coller, parce qu'il y a des informations dans la classe compilée qui doivent être identique des deux côtés sinon tu auras d'autres erreurs.
Avec un jar c'est pratique de partager du code, surtout si tu as une gestion des dépendances, par exemple avec Maven, où le jar est centralisé dans un dépôt de code commun et donc accessible à l'identique par n'importe quel programme qui en a besoin.
Commenter la réponse de paesportcomputing

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.