0

RMI がどのように機能するかを知っていると思ったら、RMI が戻ってきて、わからないと教えてくれます。次の状況:

私は与えました:

インターフェイスは、オブジェクトに関する情報を取得するための明確な 3 つの getter メソッドを提供します。3 つのメソッドを呼び出すオブジェクトを検索し、それらの値を出力したいだけです。

ただし、次の実装 ( http://pastebin.com/d4JS0Wai ) はトリックを実行せず、次の例外が発生します。

スレッド「メイン」での例外 java.rmi.UnmarshalException: アンマーシャリング エラー。ネストされた例外: java.lang.ClassNotFoundException: Article at sun.rmi.registry.RegistryImpl_Stub.lookup(Unknown Source) at rmi.ArticleDisplayer.main(ArticleDisplayer.java:21)

原因: java.lang.ClassNotFoundException: Article at java.net.URLClassLoader$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(Unknown Source) ...

また、マシンがコードを実行していないため、とにかく SecurityManager が必要な理由もわかりません。コードは、rmiregistry を実行しているマシンで実行されます。とにかく、これは私のポリシー ファイルです: http://pastebin.com/chGEqceA

4

2 に答える 2

0

この問題は、クライアントとソース アプリケーションの両方から同じ クラスにアクセスできる必要があるために発生します。Article

Jar2 つのモジュール (クライアントとサーバー) で使用される共通クラスを使用して、それを使用できます (私は通常、これらのタイプのパッケージに「commons」という名前を付けます) 。

于 2011-02-21T17:05:26.820 に答える
0

さて、問題への答え:

実装とインターフェースは、デフォルトのパッケージ内にあります。私は自分のパッケージ内にプログラムを書きました: rmi

また、パッケージ rmi のどこにダウンロードしたインターフェイスもあります。実は rmi.Article != Article.

于 2011-02-21T17:06:33.930 に答える