0

コンピューターで正常に実行されるRMIプログラムがありますが、学校のコンピューターで実行すると、Remoteを拡張しているクラスのClassNotFoundExceptionが発生します。私はいくつかの同様の質問を見ました、私のエラーはほとんど同じです、しかしそこで提供された解決策は私のために働いていません。RMIレジストリはすでに実行されており、他の学生と共有されているため、引数を渡すことができません。プログラム内でsystem.propertyを設定しようとしましたが、役に立ちませんでした。私もrmicを使ってみましたが、それもうまくいきませんでした。

Exception.getMessage()からのエラーメッセージは次のとおりです。

Server exception: RemoteException occurred in server thread; nested exception is:
    java.rmi.UnmarshalException: error unmarshalling arguments; nested exception is:
    java.lang.ClassNotFoundException: chordNode

これらは同じタイプの問題に関する質問です。

rmiクラスが例外を見つけることができません

rmiサーバーを実行している、classnotfound

4

2 に答える 2

0

java.lang.ClassNotFoundException:chordNode

クラス「chordNote」がクラスパスにないように見えます。それはあなたのものですか?そうである場合は、デフォルトのパッケージを使用することはお勧めできません。また、クラス名は通常のJava命名規則に従っていません。どちらも私にとって悪い兆候です。

コードを投稿しないため、何が問題なのかを正確に特定することは困難です。

しかし、あなたは学生なので、この問題へのアプローチから始めてみることをお勧めします。「このマシンでは正常に動作しますが、このマシンでは動作しません」などと言われると、特定の条件に依存しているため、完全には理解できない可能性があります。

RMIレジストリはすでに実行されており、他の学生と共有されているため、引数を渡すことができません。

これは、RMIサービスを展開しようとしている共有コンピューターですか?サーバーとRMIリポジトリの所有者に相談して、コードをそこにデプロイする方法を確認します。

または、デフォルト以外の別のポートでリッスンする独自のインスタンスを開始することもできます。

プログラム内でsystem.propertyを設定しようとしましたが、役に立ちませんでした。

申し訳ありませんが、システムプロパティとはどういう意味ですか?

私もrmicを使ってみましたが、それもうまくいきませんでした。

あるコンピューターから別のコンピューターにコードを移動する場合、なぜrmicを実行する必要があるのでしょうか。

「動作しなかった」とはどのようなものですか?パスが正しく設定されていない可能性があります。

申し訳ありませんが、あなたの質問は曖昧すぎて答えられません。

于 2010-02-26T23:03:58.050 に答える
0

問題は、別のユーザーによって起動されたrmiregistryを使用することでした。これは、rmiregistryによって使用されているクラスパスが別のユーザー環境に基づいていることを意味します。これを修正するために、私は別のポートで独自のrmiregistryを起動しました。

于 2010-02-27T07:02:29.207 に答える