2010-12-20 6 views
0

ファイルをパッケージにまとめる前に、このプログラムはうまくいきました。次のように私が取得エラーメッセージは次のとおりです。Java RMIアプリケーション。 "_スタブをキャストできません"エラー

にClassCastException:a3.seneca.RemoteMethod_Stubはa3.seneca.RemoteMethod にキャストすることはできません(行35)

次のように私のパッケージ構造がある(キャップ​​がディレクトリを意味します):

-A3

--server

---- DataAccessServer

--SEN ECA

---- RemoteMethodInterface

---- RemoteMethod

--CLIENT

---- DataAccessClient

エラーメッセージがこれで参照している行:

RemoteMethod rmHandler = (RemoteMethod) Naming.lookup("rmi://localhost:666/location"); 

DataAccessServerでは、あらかじめS:

RemoteMethod rm = new RemoteMethod(); 
Naming.rebind("rmi://localhost:666/location", rm); 

次のように実行する手順は、次のとおりです。

コンソールウィンドウ#1: のrmiregistry 666

コンソールウィンドウ#2: のjava A3 \セネカ* .javaファイル

をjava a3 \ server * .java

java a3 \ client * .java

Javaは

RemoteMethod_stub.classはセネカのディレクトリに置かれa3.client.DataAccessClient

:DataAccessServer

コンソールウィンドウ#

にrmic -v1.2 a3.seneca.RemoteMethod

のjava 。私はまたそれが作成された後にクライアントディレクトリにコピーしようとしました。なぜこれが起こっているのかについての洞察は非常に高く評価されます。

-Dan

+0

訂正:javac ... * .java NOT java – Dan

答えて

0

は、サーバークラスにスタブをキャストしようとしています。それをリモートインターフェイスにキャストする必要があります。スタブはサーバのインスタンスではなく、リモートインタフェースのインスタンスです。これがRMIの仕組みであり、それはリモートインタフェースのためのものです。

関連する問題