rmiクラスを使用していますが、問題が1つあります。私のインターフェースの名前はserver
であり、実装クラスの名前はserverImpl
です。コマンドラインに入力rmic -v1.2 -classpath .. serverImpl
すると(インターフェイスとクラスをコンパイルした後)、次のエラーが表示されます。
error: Class serverImpl not found.
serverImpl
指定されたディレクトリに存在することを確認しました。
サーバークラスと実装されたクラスをフォルダーに入れ、名前を付けますx
このパッケージを各クラスの上に追加しますpackage x;
cmd を開き、フォルダjavac x/MyServer.java
をjavac x/MyImpl.java
含むディレクトリから書き込みます。x
フォルダrmic x.MyServer
を含むディレクトリから書き込みます。x
あなたは今持っているはずです、MyServer_stub.class
そしてあなたは良い一日を過ごすことができます:)
PS: パッケージ名は、RMI やクラス内で使用されるオブジェクトとは異なることが重要です。そうしないと、オブジェクトの衝突が発生します。
serverImpl
「指定されたディレクトリに存在する」必要はありません。ディレクトリを指定しておらず、CLASSPATH を指定してserverImpl
おり、その中に適切なパッケージ構造の下に存在する必要があります。また、コマンド ラインで正しく名前を付ける必要があります。serverImpl
がパッケージに含まれている場合x.y
は、x/y ディレクトリを含む CLASSPATH を指定x.y.serverImpl
し、コマンド ラインで指定する必要があります。「java」コマンドで実行する場合とまったく同じです。
rmic
しかし、約 8 年間はまったく必要ありませんでした。クラス Javadoc for を参照してくださいUnicastRemoteObject
。
スラッシュ (/) をドット (.) に変換してください。それは私のために働いた。
私は次の構造を持っています
rmitest/
rmitest/MyRemoteIf.java
rmitest/MyRemoteImpl.java
javac rmitest/*.java
rmic rmitest.MyRemoteImpl
出力は次のとおりです。
rmitest/MyRemoteIf.class
rmitest/MyRemoteImpl.class
rmitest/MyRemoteImpl_Stub.class
rmitest/MyRemoteImpl_Skel.class
幸運を!!カラン