2013-10-06 105 views
0

我做這個教程:http://www.youtube.com/watch?v=vkw275ptI3E 這是一個Java RMI的教程(客戶端,服務器) 但他試試這個地方和它在我的電腦Java 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現在要求您在客戶端和註冊表以及服務器上設置代碼庫屬性。屏幕截圖僅顯示服務器上的設置。

screencast(或者Eclipse插件)也過時了,它顯示了存根的生成。沒有必要使用諸如rmic或Eclipse插件之類的工具來生成存根,因爲自Java SE 5(它於2002年發佈)以來,存根由RMI自動生成。