Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/354.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
java.rmi.ConnectException:连接拒绝承载,java.rmi.unmarshaleexception:错误解组返回头;_Java_Rmi - Fatal编程技术网

java.rmi.ConnectException:连接拒绝承载,java.rmi.unmarshaleexception:错误解组返回头;

java.rmi.ConnectException:连接拒绝承载,java.rmi.unmarshaleexception:错误解组返回头;,java,rmi,Java,Rmi,我一直在学习RMI,我开始使用Hello World程序,我开始使用该程序,然后开始使用其他示例程序,这些程序都很有效。(虽然有错误,但我在google/stackoverflow的帮助下调试了它们)。现在我开始写我自己的项目,这基本上是一个旅行推销员实现,它将密集的计算转移到服务器上 一切正常,突然我所有的服务器RMI实现都崩溃了。例如,当我从Eclipse运行computeEngine作为RMI应用程序(我使用RMI插件)时,我得到以下错误之一: java.rmi.ConnectExcept

我一直在学习RMI,我开始使用Hello World程序,我开始使用该程序,然后开始使用其他示例程序,这些程序都很有效。(虽然有错误,但我在google/stackoverflow的帮助下调试了它们)。现在我开始写我自己的项目,这基本上是一个旅行推销员实现,它将密集的计算转移到服务器上

一切正常,突然我所有的服务器RMI实现都崩溃了。例如,当我从Eclipse运行computeEngine作为RMI应用程序(我使用RMI插件)时,我得到以下错误之一:

java.rmi.ConnectException: Connection refused to host 
java.rmi.UnmarshalException: Error unmarshaling return header; nested exception is: java.io.EOFException
或错误:

java.rmi.ConnectException: Connection refused to host 
java.rmi.UnmarshalException: Error unmarshaling return header; nested exception is: java.io.EOFException
我有4-5个不同的RMI应用程序都在工作,然后突然,我在服务器上运行的“ComputeEngine.java”文件开始为我的每个应用程序返回这两个错误中的一个

注意:因为我正在测试这些应用程序,所以我使用“localhost”作为我的服务器主机名。换句话说,服务器和客户端是同一台机器

我尝试过的事情:

  • 我检查了我的etc/hosts/文件,发现127.0.0.1被设置为localhost。我还创建了一台名为“virtualmachine”的新机器,并使用了我的公共IP地址。两者都不起作用
  • 我对server.policy和client.policy文件进行了两次和三次检查,两个文件似乎都没有问题
  • 我曾尝试从终端运行RMI应用程序(而不是使用eclipse中的RMI插件),但我得到了相同的错误
  • 我退出所有java进程并重新运行所有程序,确保首先启动服务器(其他线程建议这些错误来自于首先运行客户机)
  • 我已经对自己进行了端口扫描,当我运行服务器时,端口1099(默认的rmi端口)会显示“侦听”(即使服务器返回异常)
  • 我尝试过更改java.rmi.server.hostname,但到目前为止似乎没有任何帮助
  • 我不明白在同一台计算机上同时运行服务器和客户端时,我如何无法连接到主机

    我先发制人地表示歉意,因为我对RMI和Java很差劲,并且错过了一些可能显而易见的解决方案

    我应该包括我一直试图运行的源代码吗

    编辑:以下是堆栈跟踪:

    ComputeEngine exception:
    java.rmi.UnmarshalException: Error unmarshaling return header; nested exception is: 
        java.io.EOFException
        at sun.rmi.transport.StreamRemoteCall.executeCall(StreamRemoteCall.java:227)
        at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:377)
        at sun.rmi.registry.RegistryImpl_Stub.rebind(Unknown Source)
        at engine.ComputeEngine.main(ComputeEngine.java:33)
    Caused by: java.io.EOFException
        at java.io.DataInputStream.readByte(DataInputStream.java:267)
        at sun.rmi.transport.StreamRemoteCall.executeCall(StreamRemoteCall.java:213)
        ... 3 more
    
    谢谢大家!

    编辑2:

    我注意到,如果我在启动应用程序时重新启动了RMIregistry(如中所示,我在Eclipse RMI插件中选择了重新启动RMIregistry的选项),那么对于我的“codebase.jar”中的类,我会得到一个ClassNotFoundError

    Caused by: java.rmi.UnmarshalException: error unmarshalling arguments; nested exception is: 
        java.lang.ClassNotFoundException: compute.Compute
    

    有什么想法吗?

    你检查过“ComputengineJava”服务器应用程序的日志了吗?有什么错误吗?@fmodos日志和控制台输出是一样的吗?因为没有生成“blahblah.log”文件。控制台显示“java.rmi.UnmarshalException:Error unmarshaling return header;嵌套异常为:java.io.EOFException”(由于注释长度限制,我无法粘贴完整的错误内容)。它是由java.io.EOFException引起的,我不理解它,因为我没有接受任何文件输入,除非RMI以某种方式在某个地方抛出此异常。好的,请编辑您的问题并发布此完整策略检查此帖子,它似乎与您面对的错误相同谢谢!我用“-Djava.security.debug=access,failure”运行服务器,现在我得到一个新错误。“致命错误:预加载类的布局无效”。希望这意味着当前的错误不再是问题。在其他问题和谷歌上似乎有很多关于这个新错误的信息,所以我应该能够解决它。谢谢你的帮助!