2010-02-26 72 views
0

我有一个RMI程序可以在我的计算机上正常运行,但是当我在学校计算机上运行它时,我得到了一个ClassNotFoundException,用于正在扩展Remote的类。我看过一些类似的问题,我的错误几乎完全相同,但提供的解决方案并不适合我。我无法将参数传递给RMI注册表,因为它已在运行并与其他学生共享。我尝试在我的程序中设置system.property,但这没有帮助。我也尝试使用rmic,但是这也不起作用。RMI ClassNotFoundException

这里是Exception.getMessage()我的错误信息:

Server exception: RemoteException occurred in server thread; nested exception is: 
    java.rmi.UnmarshalException: error unmarshalling arguments; nested exception is: 
    java.lang.ClassNotFoundException: chordNode 

这些都是与同类型的问题的问题。

rmi class can not found exception

running rmi server, classnotfound

回答

0

问题在于使用由其他用户启动的rmiregistry。这意味着rmiregistry使用的类路径基于另一个用户环境。为了解决这个问题,我在另一个港口启动了自己的rmiregistry。

0

抛出java.lang.ClassNotFoundException: chordNode

我看来像类 “chordNote” 是不是在classpath中。那是你的吗?如果是这样,你应该知道使用默认包并不是一个好主意,而且你的类名不符合通常的Java命名约定。这两个都是对我不好的迹象。

由于您没有发布任何代码,因此很难准确判断出了什么问题。

但是既然你是一个学生,我建议你从这个问题的方法开始。当人们说“它在这台机器上运行良好,但没有在那台机器上运行”时,它告诉我,它们取决于某些条件是真的,他们可能不完全了解:

我不能将参数传递给RMI注册表 ,因为它已经在运行,并且与其他学生共享 。

那么这是一个共享计算机,你正试图部署你的RMI服务?我会与服务器和RMI存储库的所有者通话,以了解如何将代码部署到那里。

或者您可以启动您自己的实例,在默认情况下侦听另一个端口。

我尝试设置system.property 我的计划之内,但没有 帮助。

对不起,您的系统属性是什么意思?

我也试过使用rmic,但 也没有工作。

如果您要将代码从一台计算机移动到另一台计算机,您为什么需要运行rmic?

“不起作用”是什么样子?也许路径设置不正确。

对不起,你的问题太模糊了回答。