2011-09-27 7 views
0

나는 RMI 서버에 메시지를 보내는 간단한 RMI 응용 프로그램을 만들었습니다. 그러나 메시지를 보낼 때 오류 메시지가 나타납니다. 프로그램을 실행하는 데 Eclipse를 사용하고 있습니다.간단한 RMI 응용 프로그램

sending hello to 10.0.0.12:3233

java.rmi.UnmarshalException: error unmarshalling return; nested exception is: 
    java.lang.ClassNotFoundException: com.zoondia.ReceiveMessageInterface (no security manager: RMI class loader disabled) 
    at sun.rmi.registry.RegistryImpl_Stub.lookup(Unknown Source) 
    at test.rmi.RmiClient.main(RmiClient.java:28) 
Caused by: java.lang.ClassNotFoundException: com.zoondia.ReceiveMessageInterface (no security manager: RMI class loader disabled) 
    at sun.rmi.server.LoaderHandler.loadProxyClass(Unknown Source) 
    at java.rmi.server.RMIClassLoader$2.loadProxyClass(Unknown Source) 
    at java.rmi.server.RMIClassLoader.loadProxyClass(Unknown Source) 
    at sun.rmi.server.MarshalInputStream.resolveProxyClass(Unknown Source) 
    at java.io.ObjectInputStream.readProxyDesc(Unknown Source) 
    at java.io.ObjectInputStream.readClassDesc(Unknown Source) 
    at java.io.ObjectInputStream.readOrdinaryObject(Unknown Source) 
    at java.io.ObjectInputStream.readObject0(Unknown Source) 
    at java.io.ObjectInputStream.readObject(Unknown Source) 

누구는 issue.Am 내가 이클립스 RMI의 compailor 필요한 program.is을 실행하기위한 Eclipse를 사용하거나 프로그램을 실행할 때 자동으로 compails 무슨 알고있다.

감사합니다. VKS.

답변

1

예외는 서버에 RMI 보안 관리자를 설치하지 못했음을 나타냅니다. 보안 관리자가 설정되어 있지 않으면 RMI에서 클라이언트의 코드를 다운로드 할 수 없습니다. 자세한 내용은

if (System.getSecurityManager() == null) 
{ 
    System.setSecurityManager(new java.rmi.RMISecurityManager()); 
} 

체크 아웃 RMISecurityManager의의 javadoc을 :

당신은 당신의 서버 코드에 다음과 같은 것을 할 필요가있다.

+0

안녕하세요 브랜든, 빠른 답변을 주셔서 감사합니다, 지금은 새로운 오류 액세스가 거부 java.net.socketpermission을 해결할 수 있습니다 ... 클라이언트 측 .... 어떤 아이디어에서? – vks

+0

서버 측에서 보안 정책 (예 : java.security.policy 명령 줄 옵션 사용)을 지정하고 있습니까? –

+0

아닙니다. 내 대답을 보라. – EJP

0

명명 된 클래스가 클라이언트의 클래스 경로에 없음을 나타내는 예외입니다.

  1. 당신은 코드베이스 기능을 사용하지 않는 당신이 클라이언트 JAR 파일의 클래스를 포함하지 않은 두 가지 원인으로 인해 하나가 될 수 있습니다

    .

  2. 코드베이스 기능을 사용하고 있으며 보안 관리자를 설치하지 않았습니다.

1

첫 번째 오류, 즉 언 마샬링 인수에 대해 한 번 오류가 발생했습니다. rmiregistry를 실행하기 전에 디렉토리를 src 폴더로 변경하십시오.

두 번째 오류의 경우 서버와 클라이언트에 대한 정책 파일을 모두 작성했는지 확인하십시오.

관련 문제