2013-10-06 2 views
0

: http://www.youtube.com/watch?v=vkw275ptI3E 는 자바 RMI 튜토리얼 (클라이언트, 서버) 이야하지만 그는 현지에서이 작업을 시도하고 내가하려고하면 내 컴퓨터자바 RMI 서버 probleme 나는이 튜토리얼하고 있어요

작업을 나던을 로컬에서 내 서버를 활성화하십시오.이 메시지가 나타납니다.

java.rmi.ServerException: RemoteException occurred in server thread; nested exception is: 
    java.rmi.UnmarshalException: error unmarshalling arguments; nested exception is: 
    java.lang.ClassNotFoundException: simple.rmi.server.MyServer_Stub 
    at sun.rmi.server.UnicastServerRef.oldDispatch(UnicastServerRef.java:400) 
    at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:248) 
    at sun.rmi.transport.Transport$1.run(Transport.java:159) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at sun.rmi.transport.Transport.serviceCall(Transport.java:155) 
    at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:535) 
    at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:790) 
    at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:649) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918) 
    at java.lang.Thread.run(Thread.java:680) 
    at sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(StreamRemoteCall.java:255) 
    at sun.rmi.transport.StreamRemoteCall.executeCall(StreamRemoteCall.java:233) 
    at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:359) 
    at sun.rmi.registry.RegistryImpl_Stub.bind(Unknown Source) 
    at simple.rmi.server.MyServer.main(MyServer.java:33) 
Caused by: java.rmi.UnmarshalException: error unmarshalling arguments; nested exception is: 
    java.lang.ClassNotFoundException: simple.rmi.server.MyServer_Stub 
    at sun.rmi.registry.RegistryImpl_Skel.dispatch(Unknown Source) 
    at sun.rmi.server.UnicastServerRef.oldDispatch(UnicastServerRef.java:390) 
    at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:248) 
    at sun.rmi.transport.Transport$1.run(Transport.java:159) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at sun.rmi.transport.Transport.serviceCall(Transport.java:155) 
    at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:535) 
    at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:790) 
    at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:649) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918) 
    at java.lang.Thread.run(Thread.java:680) 
Caused by: java.lang.ClassNotFoundException: simple.rmi.server.MyServer_Stub 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:202) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306) 
    at sun.rmi.server.LoaderHandler$Loader.loadClass(LoaderHandler.java:1185) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247) 
    at java.lang.Class.forName0(Native Method) 
    at java.lang.Class.forName(Class.java:249) 
    at sun.rmi.server.LoaderHandler.loadClassForName(LoaderHandler.java:1198) 
    at sun.rmi.server.LoaderHandler.loadClass(LoaderHandler.java:433) 
    at sun.rmi.server.LoaderHandler.loadClass(LoaderHandler.java:164) 
    at java.rmi.server.RMIClassLoader$2.loadClass(RMIClassLoader.java:620) 
    at java.rmi.server.RMIClassLoader.loadClass(RMIClassLoader.java:247) 
    at sun.rmi.server.MarshalInputStream.resolveClass(MarshalInputStream.java:201) 
    at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1589) 
    at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1494) 
    at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1748) 
    at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1327) 
    at java.io.ObjectInputStream.readObject(ObjectInputStream.java:349) 
    ... 12 more 

어떻게해야합니까?

+0

스텁과 스켈레톤을 교환 했습니까? –

+0

무엇을 의미합니까? RMI -> 사용 가능한 스텁 생성을 클릭 하시겠습니까? – capa57

답변

0

최근의 JDK 버전에서 이전 RMI 자습서가 작동하지 않는 일부 호환되지 않는 변경 사항이 있습니다. 특히, JDK 7u21에서는 이제 클라이언트와 레지스트리뿐 아니라 서버에서도 codebase 속성을 설정해야합니다. 스크린 캐스트는 서버의 설정 만 표시합니다.

스크린 캐스트 (또는 아마도 이클립스 플러그인)는 스텁의 생성을 보여주기 때문에 오래된 것입니다. 스텁은 Java SE 5 (2002 년에 릴리스 된) 이후 RMI가 자동으로 생성 했으므로 rmic 또는 Eclipse 플러그인과 같은 도구를 사용하여 스텁을 생성 할 필요가 없습니다.