Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
RemoteException java.rmi.UnmarshalException:对返回进行解组时出错_Java_Rmi_Classnotfoundexception - Fatal编程技术网

RemoteException java.rmi.UnmarshalException:对返回进行解组时出错

RemoteException java.rmi.UnmarshalException:对返回进行解组时出错,java,rmi,classnotfoundexception,Java,Rmi,Classnotfoundexception,我在不同物理机器上的两个JVM上运行这个程序。我得到了错误 RemoteException java.rmi.UnmarshalException: error unmarshalling return; nested exception is: java.lang.ClassNotFoundException: CalculatorImpl_Stub (no security manager: RMI class loader disabled) 我甚至试过在同一台机器上运行它(程

我在不同物理机器上的两个JVM上运行这个程序。我得到了错误

RemoteException
java.rmi.UnmarshalException: error unmarshalling return; nested exception is: 
    java.lang.ClassNotFoundException: CalculatorImpl_Stub (no security manager: RMI class loader disabled)
我甚至试过在同一台机器上运行它(程序不变),它可以工作,但在不同的机器上不工作。有人能帮我吗

@beny23-谢谢,但我还是犯了这个错误:

RemoteException
java.rmi.UnmarshalException: error unmarshalling return; nested exception is: 
java.lang.ClassNotFoundException: CalculatorImpl_Stub

客户端如何拥有CalculatorImpl_存根的副本?

听起来您没有使用安全管理器:

您是否有策略文件(
my.policy
):

并使用

java -Djava.security.manager -Djava.security.policy=/some/path/my.policy MyClass
有三种情况

  • 如果绑定到注册表时出现错误,则注册表无法通过其类路径或通过codebase功能访问该类

  • 如果在查找注册表时出现错误,则您的客户端无法通过其类路径或通过代码库功能访问该类

  • 如果您使用的是codebase功能,那么这反过来可能是由于注册表在其类路径上访问该类,从而导致它不使用codebase,从而导致codebase注释丢失,因此您的客户机不知道如何使用该类的codebase

  • 如果不使用代码库功能,请忽略上一段;-)


  • 我的Java类有一个工作的
    RMI客户端
    服务器
    。我决定将它们放在自己的包中,而不是作为默认包运行

    在我将它们放在自己的包中之后,
    java.rmi.UnmarshalException:error unmarshalling return;嵌套异常为:java.lang.ClassNotFoundException:
    连接上开始发生错误

    我把程序放回默认包中,它又开始工作了


    我意识到这可能有一个技术原因,但这对我来说是有效的

    我遇到了这个问题,因为客户端和服务器代码中的包名不同:

    package my.pkg; 
    // server side interface definition...
    
    // ------------- //
    
    package my.pkg.something;
    // client side interface definition...
    
    我更改了客户端包的名称,并将其设置为服务器端包的名称:

    package my.pkg; 
    // server side interface definition...
    
    // ------------- //
    
    package my.pkg; // renamed to the name of package in server-side .
    // client side interface definition...
    

    问题消失了。

    我用重命名包名解决了它。服务器和客户端位于两个不同的项目中,但具有相同的包命名

    难以置信,这对我很有效。是的!这对我也起到了作用。他不需要
    SecurityManager
    或.policy文件来解决这个问题,除非他试图使用RMI代码库功能,但没有说明。EJP请添加更多信息!这听起来很有用,但我不明白。@Victor看到我的答案了。刚刚说到这个……你能解释一下你所说的代码库功能吗?这个答案解决了我的问题。你知道发生这种事的原因吗?@RodrigoBorba不知道!不幸的是,我记不起来了…帮助我在EHCache中进行RMI缓存复制这对我很有用
    package my.pkg; 
    // server side interface definition...
    
    // ------------- //
    
    package my.pkg; // renamed to the name of package in server-side .
    // client side interface definition...