ホームページ >Java >&#&チュートリアル >RMI サーバーで「java.rmi.ServerException: RemoteException Occurred in Server Thread (ClassNotFoundException)」が発生するのはなぜですか?

RMI サーバーで「java.rmi.ServerException: RemoteException Occurred in Server Thread (ClassNotFoundException)」が発生するのはなぜですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-11-30 10:11:14367ブラウズ

Why Do I Get

"java.rmi.ServerException: サーバー スレッドで RemoteException が発生しました (ClassNotFoundException)"

問題:

RMI サーバーを起動しようとすると、次の例外が発生します発生した問題:

java.rmi.ServerException: RemoteException occurred in server thread; nested exception is:
        java.rmi.UnmarshalException: error unmarshalling arguments; nested exception is:
        java.lang.ClassNotFoundException: Interfaces.RemoteMethodIntf

診断:

根本的な問題は、RMI レジストリがリモート インターフェイスで参照されているクラスを見つけられないことです。これは、次のような状況で発生する可能性があります。

  • エクスポート中: スタブ生成ツール (rmic) が実行されていないか、UnicastRemoteObject Javadoc のプリアンブルに記載されている必要なクラスパスの変更が実行されていない。 .
  • バインディング: レジストリにはスタブ、リモート インターフェイス、またはそのクラスパス上の依存関係。
  • 検索中: クライアントのクラスパスに同じクラスがありません。
  • リモートの呼び出しメソッド: クライアントがクラスパスに存在しないクラスのオブジェクトをサーバーに送信したか、サーバーがクラスパスに存在しないクラスのオブジェクトを返しました。クライアントのクラスパス。

解決策:

この特定のケースでは、問題はレジストリのクラスパス上に必要なクラスが欠落していることに関係しています。この問題を解決するには、いくつかのオプションがあります。

  • 関連する JAR またはディレクトリを含む変更された CLASSPATH を使用してレジストリを起動します。
  • 内で LocateRegistry.createRegistry() を使用してレジストリを起動します。サーバーの JVM。
  • 説明に従って動的スタブを利用します。 UnicastRemoteObject Javadoc 内。ただし、依存関係の問題に対処する必要がある場合があります。
  • オブジェクト転送のクラスパスの一貫性を検証して、上記のケース (4) が発生しないようにしてください。
  • これが問題であることを認識し、コードベース機能の使用を検討してください。導入オプション。

以上がRMI サーバーで「java.rmi.ServerException: RemoteException Occurred in Server Thread (ClassNotFoundException)」が発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。