2011-04-26 193 views
2

尊敬的堆棧溢出用戶。rmi註冊問題

我已經閱讀了很多RMI註冊表問題,並試圖解決我的問題,但沒有成功。所以這是我的情況,我希望有人能至少幫助我一點。

我正在爲一個學校項目建立一個多玩家pacman。它需要使用java RMI,所以我創建了3個不錯的jar文件。該服務器包含(僅)一個主類,它將該東西發佈到遠程服務器並加載一些東西,如地圖等。包含一些揮杆垃圾的客戶端顯示一些漂亮的表單。第三個包含所有pacman代碼的庫。

現在,當我在本地啓動服務器時,它會啓動一個rmiregistry並將遊戲綁定到它(在課程設置後)。然後我將我的客戶端連接到它並可以很好地播放。所有的作品,我可以開始一個視圖客戶端連接到我的本地rmiregistery並很好地獲得遊戲對象。 之後,我啓動獨立於服務器的註冊表,並再次運行程序成功。即使通過我的筆記本電腦(不是127.0.0.1)的IP,它工作得很好。請注意,我沒有設置註冊表的類路徑。

所以之後,我把東西移動到服務器(2008年)。我在那裏啓動了rmiregistry,沒有classpath,嘗試將server.jar連接到它,但失敗了。 (無法找到..spel類的exeption)所以我修復了類路徑....沒有效果....所以我打開了一個新的控制檯啓動了一個新的註冊表,將pacman.jar複製到c:\並運行了服務器.jar與-Djava.rmi.server.codebase = c:\ paramether ....無效......然後我設置了一個安全管理器...(System.setSecurityManager(new RMISecurityManager());)並制定了一個策略,其中包含:grant {permission java.security.AllPermission;};並執行服務器使用 server.jar -Djava.rmi.server.codebase = c:-Djava.security.policy = server.policy ...再次沒有效果。

我不斷收到同樣的異常:

java.rmi.ServerException: RemoteException occurred in server thread; nested exception is: 
     java.rmi.UnmarshalException: error unmarshalling arguments; nested exception is: 
     java.lang.ClassNotFoundException: Tervoort.Bram.Packman.Spel 
     at sun.rmi.server.UnicastServerRef.oldDispatch(Unknown Source) 
     at sun.rmi.server.UnicastServerRef.dispatch(Unknown Source) 
     at sun.rmi.transport.Transport$1.run(Unknown Source) 
     at java.security.AccessController.doPrivileged(Native Method) 

是否有任何人有任何線索的問題是什麼?以及如何解決它?

+0

o是的,我嘗試了-Djava.rmi.server.codebase = file:/ c:/packman.jar來..到相同的結果錯誤。 – Bram 2011-04-26 18:51:50

回答

0

This也可能有所幫助。看看A.2。這似乎是什麼原因。無法在所提供的URL中找到類/類。確保url正確形成,並且所有需要的類都在類路徑中。

「當遠程對象被RMI編組時(作爲遠程調用的參數或作爲返回值),存根類的代碼庫被RMI檢索並用於註釋序列化存根。解碼器用於使用RMIClassLoader加載存根類文件,除非該類已經可以在CLASSPATH或上下文類加載器中找到,例如applet代碼庫。

如果_Stub類由RMIClassLoader加載,那麼RMI已經知道哪個代碼庫用於註釋,如果_Stub類是從CLASSPATH加載的,那麼就沒有明顯的代碼庫,並且RMI會查詢java.rmi.server.codebase系統屬性來查找代碼庫。如果系統屬性是沒有設置,那麼存根被編組爲空代碼庫,這意味着它不能被使用,除非客戶端在客戶端的CLASSPATH中有一個_Stub類文件的匹配副本。「

+0

問題在於,在這種情況下,spel是遠程對象的接口,它作爲客戶端存在於兩個服務器的路徑中,所以不應該從rmiclassloader加載。除了可能的註冊 – Bram 2011-04-26 20:13:12