2013-10-30 178 views
0

我正在與RMI掙扎。 我爲這個全新的,並試圖this tutorialjava RMI無法運行服務器

我所有的類和接口編譯很好,但是當我嘗試運行服務器類,我得到一些例外情況(見下表)該項目是建立如下:

-pakage hello 
      --interface Hello.java 
      --class Server.java 
      --class Client.java 

我完成了Somme的研究,他們總是建議更改安全策略文件。 所以我添加以下政策的java.policy:

grant 
{ 
    permission java.security.AllPermission "", ""; 
}; 

次要「問題」:我運行Linux Mint的,所以我才明白,我並不需要運行rmiregistry的,是正確的或做我也需要開始,我該怎麼做。

列出的例外:

Server exception: java.rmi.ServerException: RemoteException occurred in server thread; nested exception is: 
    java.rmi.UnmarshalException: error unmarshalling arguments; nested exception is: 
    java.lang.ClassNotFoundException: hello.Hello 
java.rmi.ServerException: RemoteException occurred in server thread; nested exception is: 
    java.rmi.UnmarshalException: error unmarshalling arguments; nested exception is: 
    java.lang.ClassNotFoundException: hello.Hello 
    at sun.rmi.server.UnicastServerRef.oldDispatch(UnicastServerRef.java:419) 
    at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:267) 
    at sun.rmi.transport.Transport$1.run(Transport.java:177) 
    at sun.rmi.transport.Transport$1.run(Transport.java:174) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at sun.rmi.transport.Transport.serviceCall(Transport.java:173) 
    at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:556) 
    at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:811) 
    at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:670) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
    at java.lang.Thread.run(Thread.java:744) 
    at sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(StreamRemoteCall.java:275) 
    at sun.rmi.transport.StreamRemoteCall.executeCall(StreamRemoteCall.java:252) 
    at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:378) 
    at sun.rmi.registry.RegistryImpl_Stub.bind(Unknown Source) 
    at hello.Server.main(Server.java:23) 

如果誰可以幫我嗎?

回答

1

錯誤清楚地表明hello.Hello類未找到。請確保它在classpath中。你必須在link您所提供的一切 - 科啓動Java RMI註冊表,服務器端和客戶端

+0

的類和接口在類路徑中,開始了RMI註冊表,但仍然沒有更迭 –

+0

沒有你的RMI註冊表啓動?在使用java -classpath classDir完全限定的服務器類名稱在classpath中設置.class文件之後,您是否啓動JVM? – Keerthivasan

+0

我按順序使用的命令: javac -d ./compiled * .java; cd編譯; rmiregistry&; java -classpath。 hello.Server –