java.rmi.server.codebase不能在linux上运行

时间:2013-06-02 15:08:26

标签: java rmi java-7 classnotfoundexception codebase

我正在使用rmi在Twitter上工作。 我在Windows上工作,一切正常。

但是在linux上我有:

java.rmi.UnmarshalException: error unmarshalling return; nested exception is: 
    java.lang.ClassNotFoundException: server.SimpleBark
    at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:196)
    ...

此异常在客户端弹出,似乎客户端不使用代码库服务器,代码库服务器不接收任何连接。

我再说一遍,在Windows上一切正常,我无法找到它的来源。

2 个答案:

答案 0 :(得分:4)

From the JDK 7 guides

  

从JDK 7 Update 21开始,RMI属性为java.rmi.server.useCodebaseOnly   默认情况下设置为true。

From the JDK 7 guides, that hasn't been updated

  

<强> java.rmi.server.useCodebaseOnly

     

如果此值为true,则禁止自动加载类   除了本地CLASSPATH和java.rmi.server.codebase之外   在此VM上设置的属性。使用此属性可防止客户端VM   动态下载其他代码库中的字节码。这个性质   由于存在错误,在1.2和1.2.1的实现中会被忽略。

因此,Windows计算机上的Java版本似乎已过时。更新后,解决此问题的最佳方法是在客户端包含所需的类,而不是在网络上动态加载类。

答案 1 :(得分:0)

只需从客户端和注册表类路径中删除类。