2011-04-26 128 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