java.rmi.server.codebase在linux上不工作

java.rmi.server.codebase在linux上不工作,java,rmi,java-7,classnotfoundexception,codebase,Java,Rmi,Java 7,Classnotfoundexception,Codebase,我正在使用rmi在twitter上工作。 我在窗户上工作,一切都很好 但在linux上,我有: java.rmi.UnmarshalException: error unmarshalling return; nested exception is: java.lang.ClassNotFoundException: server.SimpleBark at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:196) ..

我正在使用rmi在twitter上工作。 我在窗户上工作,一切都很好

但在linux上,我有:

java.rmi.UnmarshalException: error unmarshalling return; nested exception is: 
    java.lang.ClassNotFoundException: server.SimpleBark
    at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:196)
    ...
这个异常在客户端弹出,客户端似乎不使用codebase服务器,codebase服务器没有接收任何连接

我再说一遍,在Windows上一切正常,我找不到这是从哪里来的。

在JDK 7 Update 21中,RMI属性java.RMI.server.useCodebaseOnly 默认情况下设置为true

java.rmi.server.useCodebaseOnly

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


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

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

如果代码在windows上运行,可能是主机名问题还是其他相关问题?您是否尝试指定以下内容:-Djava.rmi.server.hostname=ipAddressHere?我只在一台计算机上工作,除了codebase服务器,linux上的一切都很好,是的,我尝试了-Djava.rmi.server.hostname它没有改变任何东西。谢谢,-Djava.rmi.server.useCodebaseOnly=false成功。但这是一个学校项目,我需要动态加载课程。我有安全的方法吗?