Java.RMI.ServerException : RemoteException s'est produite dans le thread du serveur (exception de classe introuvable)
Lors de la tentative de démarrage d'un serveur à l'aide du code extrait de code fourni, vous pouvez rencontrer une exception indiquant « java.rmi.ServerException : RemoteException s'est produite dans le thread du serveur ; l'exception imbriquée est : java.rmi.UnmarshalException : erreur lors de la désorganisation des arguments ; l'exception imbriquée est : java.lang.ClassNotFoundException : Interfaces.RemoteMethodIntf."
Cette exception est levée lorsqu'il y a un problème pour trouver les classes requises sur le serveur. Il existe quatre scénarios possibles dans lesquels cette exception peut se produire :
-
Exportation : En n'exécutant pas 'rmic' ou en sautant les étapes nécessaires dans le préambule UnicastRemoteObject, vous pourriez déclencher cette exception.
-
Liaison : Le registre peut ne pas disposer du stub, de l'interface distante ou d'une dépendance sur son chemin de classe.
-
Recherche : Le chemin de classe du client peut ne pas avoir les classes requises.
-
Appel d'une méthode distante : Transmission d'un objet avec un absent classe sur le CLASSPATH du serveur ou la réception d'un objet avec une classe absente sur le CLASSPATH du client peuvent tous deux provoquer ce problème. problème.
Dans ce cas, il s'agit du scénario 2, où le registre ne peut pas localiser la classe spécifiée. Voici quelques solutions potentielles :
-
Utilisez un CLASSPATH comprenant des JAR : Démarrez le registre avec un CLASSPATH qui inclut les JAR ou les répertoires requis.
-
Créez un registre dans la JVM de votre serveur : Utilisez LocateRegistry.createRegistry() pour démarrer le registre sur votre serveur JVM.
-
Employer des stubs dynamiques : Utilisez des stubs dynamiques comme décrit dans le Javadoc UnicastRemoteObject. Cette technique compense les problèmes de compatibilité potentiels avec l'interface distante ou les dépendances.
-
Scénario de prévention (4) : Assurez-vous que les objets transmis vers ou depuis le serveur n'ont pas de classes manquantes sur l'un ou l'autre CLASSPATH.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!