RMI ClassNotFoundException

时间:2010-02-26 20:57:50

标签: java rmi classnotfound

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

以下是来自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

2 个答案:

答案 0 :(得分:0)

  

抛出java.lang.ClassNotFoundException:   chordNode

在我看来,类“chordNote”不在类路径中。那是你的吗?如果是,您应该知道使用默认包并且您的类名不遵循通常的Java命名约定是个坏主意。两者都是对我不好的迹象。

很难确切地说出错误,因为你没有发布任何代码。

但既然你是一名学生,我建议你重新开始解决这个问题。当人们说“它在这台机器上运行良好但不在那台机器上运行”时,它告诉我他们依赖某些条件是真的,他们可能无法完全理解:

  

我无法将参数传递给RMI注册表   因为它已经在运行了   与其他学生分享。

这是您尝试将RMI服务部署到的共享计算机吗?我会与服务器和RMI存储库的所有者交谈,看看如何在那里部署代码。

或者您可以启动自己的实例来侦听除默认端口之外的其他端口。

  

我尝试设置system.property   我的程序内部,但没有   帮助

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

  

我也试过使用rmic但是那个   也没用。

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

“没用”的样子是什么样的?可能路径设置不正确。

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

答案 1 :(得分:0)

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