java.rmi.UnmarshalException: erreur unmarshalling arguments; nested exception: java.lang.ClassNotFoundException: ServicesTableau
J'ai besoin de votre aide autour de JAVA RMI, j'ai développé un programme d'échantillonnage utilisée pour trier le tableau. mais j'ai eu cette exception:
Erreur RemoteException occurred in server thread; nested exception is:
java.rmi.UnmarshalException: error unmarshalling arguments; nested exception is:
java.lang.ClassNotFoundException: ServicesTableau
et c'est mon code source du Serveur :
public class Serveur {
public static void main(String args[]) {
try {
System.out.println("Server start ...");
ServicesTableauImpl od = new ServicesTableauImpl();
String url = "rmi://" + args[0] + "/ServicesTableauImpl";
System.out.println("Passe");
Naming.rebind(url, od);
System.out.println("Attente d'invocations de client /CTRL-C pour stopper");
} catch (Exception e) {
System.out.println("Erreur " + e.getMessage());
}
/*
catch(java.net.MalformatedURLException e){
System.out.println("Mauvais nom de serveur");
System.exit(1);
}
catch(RemoteException e){
System.out.println("Pas de Rmiregistry");
System.exit(1);
}
*/
}
}
C'est cette classe ServicesTableauImpl disponible dans le chemin de classe?
OriginalL'auteur MDIT | 2012-12-28
Vous devez vous connecter pour publier un commentaire.
Que la classe n'est pas disponible dans le CLASSPATH du RMI Registre. La façon la plus simple pour corriger est de commencer le Registre dans la même JVM, via
LocateRegistry.createRegistry().
Stocker le résultat dans un champ statique.Linux ne fait aucune différence pour la réponse.
OriginalL'auteur user207421
Dans certains cas, vous avez besoin de vous déplacer rmi clients code (principale et l'interface) de package par défaut. Répétez pour le côté serveur. Il peut résoudre votre problème(travail avec l'emballage dans le rmi n'est pas si évident).
OriginalL'auteur Roberto
Ce qui m'est arrivé parce que je n'ai pas couru
rmiregistry
dans le même répertoire que le serveur.OriginalL'auteur
Cette erreur est parce que de ne pas écrire de sécurité du gestionnaire de code, en raison de laquelle la classe ne peut pas être chargés.
Donc, assurez-vous d'ajouter du code pour le gestionnaire de sécurité.
Si le compilateur ne trouve pas le gestionnaire de sécurité pour en créer un nouveau.Ajoutez le code de la méthode main.
OriginalL'auteur Pournima