Java RMI(服务器:TCP连接空闲/客户端:解组异常(EOFEException))

Java RMI(服务器:TCP连接空闲/客户端:解组异常(EOFEException)),java,security,rmi,unmarshalling,accesscontrolexception,Java,Security,Rmi,Unmarshalling,Accesscontrolexception,我正在尝试实现计算Pi的Sun教程RMI应用程序。我遇到了一些严重的问题,我找不到解决办法,尽管我已经搜索了整个网络和几个Java技术熟练的人。 我希望你能结束我的挫折 疯狂的是,我可以在我的桌面电脑上通过cmd运行应用程序。在我的笔记本电脑上的完全相同的目录中使用完全相同的代码尝试完全相同的事情会产生以下错误。当我尝试将客户端连接到服务器时出现问题 我不认为错误是由于我的策略文件,因为我可以在桌面上运行它。它一定在别处。有没有人试过同样的方法,你能告诉我我的问题在哪里吗 提前谢谢 Perr

我正在尝试实现计算Pi的Sun教程RMI应用程序。我遇到了一些严重的问题,我找不到解决办法,尽管我已经搜索了整个网络和几个Java技术熟练的人。 我希望你能结束我的挫折

疯狂的是,我可以在我的桌面电脑上通过cmd运行应用程序。在我的笔记本电脑上的完全相同的目录中使用完全相同的代码尝试完全相同的事情会产生以下错误。当我尝试将客户端连接到服务器时出现问题

我不认为错误是由于我的策略文件,因为我可以在桌面上运行它。它一定在别处。有没有人试过同样的方法,你能告诉我我的问题在哪里吗



提前谢谢
Perry

我也尝试了同样的方法,发现Java只是忽略了策略文件,不管我把它放在哪里,放进了什么,或者我使用了哪个选项让VM拾取它


最后,我在代码中创建了自己的
SecurityManager
,并手动执行所有操作。

您的服务器没有从该客户端接受连接的权限

因此,您的策略文件不在您所说的位置,或者由于其他原因未加载

使用
-Djava.security.debug=access,failure
运行它,您将看到发生安全异常时您所在的保护域,以及它拥有的权限

java -cp c:\java;c:\java\compute.jar -Djava.rmi.server.codebase=file:/c:/java/compute.jar -Djava.rmi.server.hostname=localhost -Djava.security.policy=c:/java/servertest.policy engine.ComputeEngine

NB a
file:
codebase如果引用本地文件系统就无法工作,除非客户机也在同一台机器上,这使得RMI毫无意义。代码库URL需要引用客户端可以访问的位置。您可以使用共享文件系统,但必须提供客户端可用的URL。服务器根本不使用自己的代码库URL。

这意味着您没有将其放置在正确的位置或指定正确的位置。请注意,它是一个相对或绝对URL,而不是路径,因此您必须使用/not\。此问题似乎脱离主题,因为它是自动关闭的,请参阅答案。
java -cp c:\java;c:\java\compute.jar -Djava.rmi.server.codebase=file:/c:/java/compute.jar -Djava.rmi.server.hostname=localhost -Djava.security.policy=c:/java/servertest.policy engine.ComputeEngine