Maison > Java > javaDidacticiel > Pourquoi est-ce que je reçois une « java.rmi.ServerException : RemoteException » sur mon serveur Java RMI ?

Pourquoi est-ce que je reçois une « java.rmi.ServerException : RemoteException » sur mon serveur Java RMI ?

Linda Hamilton
Libérer: 2024-12-08 13:39:11
original
421 Les gens l'ont consulté

Why am I Getting a

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 :

  1. 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.
  2. Liaison : Le registre peut ne pas disposer du stub, de l'interface distante ou d'une dépendance sur son chemin de classe.
  3. Recherche : Le chemin de classe du client peut ne pas avoir les classes requises.
  4. 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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal