2010-12-20 2 views
0

파일을 패키지로 구성하기 전에이 프로그램이 잘 작동했습니다. 다음과 같이 내가 오류 메시지는 다음과 같습니다자바 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 : 자바 A3의 \의 세네카 * 된 .java

java a3 \ server * .java

java a3 \ client * .java

rmic를 -v1.2는

을 a3.seneca.RemoteMethod

자바 DataAccessServer

콘솔 창 3 :

자바 a3.client.DataAccessClient

RemoteMethod_stub.class는 세네카의 디렉토리에 넣고

. 또한 클라이언트 디렉토리가 생성 된 후에 클라이언트 디렉토리에 복사를 시도했습니다. 왜 이런 일이 일어나고 있는지에 대한 통찰력은 크게 감사 할 것입니다.

서버 클래스에 스텁을 캐스팅하려고

+0

수정 : javac ... *. java Java – Dan

답변

0

-Dan. 원격 인터페이스로 전송해야합니다. 스텁은 서버의 인스턴스가 아니며 원격 인터페이스의 인스턴스입니다. 이것이 RMI가 작동하는 방식이며, 원격 인터페이스가 필요한 것입니다.