私はrmiアプリケーションを書いています。すべてのクラスを 1 つのディレクトリに配置すると、すべてが正常に機能します。ただし、サーバー部分とクライアント部分を分割しようとすると、 java.lang.ClassNotFoundException.myclasses が発生します。レジストリが CLASSPATH でそのクラスを見つけることができないようです。この問題を解決するにはどうすればよいですか?
2 に答える
クライアントとサーバーの両方への引数でクラスパス ディレクトリを指定していますか?
チュートリアルから:
サーバ
Solaris オペレーティング システムの場合:
java -classpath classDir -Djava.rmi.server.codebase=file:classDir/ example.hello.Server &
Windows プラットフォームの場合:
start java -classpath classDir -Djava.rmi.server.codebase=file:classDir/ example.hello.Server
サーバーの準備ができたら、クライアントを次のように実行できます。
java -classpath classDir example.hello.Client ここで、classDir はクラス ファイル ツリーのルート ディレクトリです。
http://java.sun.com/javase/6/docs/technotes/guides/rmi/hello/hello-world.html#5
レジストリは、クライアント インターフェイスをサーバー実装クラスとリンクするために存在します。クライアントでは、クラスパスにインターフェイス クラス定義が必要です。
また、クライアントは実装クラスをまったく参照しないでください。すべてがインターフェイス/スタブ クラスにある必要があります。
これで質問の答えが得られない場合は、より具体的にして、少なくともいくつかのコードを提供する必要があります。