Java RMI远程连接失败

Java RMI远程连接失败,java,rmi,Java,Rmi,我有一个非常简单的RMI服务器/客户端,可以在同一台机器上正常工作。我现在尝试在一台机器上执行服务器,在另一台机器上执行客户端,这两台机器都在同一个网络上。我已使用以下命令将属性设置为网络ip: System.getProperty("java.rmi.server.hostname", "192.168.x.x"); &两台计算机上的防火墙都已禁用,但连接仍然失败 客户端代码使用此连接到服务器(服务器使用8888上的createRegistry): 然而,被捕获的执行选项似乎显示的I

我有一个非常简单的RMI服务器/客户端,可以在同一台机器上正常工作。我现在尝试在一台机器上执行服务器,在另一台机器上执行客户端,这两台机器都在同一个网络上。我已使用以下命令将属性设置为网络ip:

    System.getProperty("java.rmi.server.hostname", "192.168.x.x");
&两台计算机上的防火墙都已禁用,但连接仍然失败

客户端代码使用此连接到服务器(服务器使用8888上的createRegistry):

然而,被捕获的执行选项似乎显示的IP与给定的IP不同,例如192.168.x.x vs 169.254.x.x:

Client exception: java.rmi.ConnectionException: Connection refused to host: 169.254.x.x; nested exception is ...

这一例外可能有两个原因:

您尚未在后台启动注册表。
您试图连接到错误的端口号。
您的防火墙可能会阻止连接。


还要确保检查并禁用任何路由器防火墙限制(如果有)。

正如dave_thompson_085所说,我正在调用
System.getProperty
,这是一个我完全没有注意到的错误。调用
System.setProperty
纠正了这个问题,现在可以正常工作。

据我所知,locateRegistry.createRegistry为我启动服务。服务器和客户端的端口号都正确(8888)。我还禁用了两台计算机上的防火墙。不启动注册表或使用错误的端口号不会导致此错误。您是否安装了多个物理或虚拟网络接口?@Marged您是指网络适配器吗?是的,其中有42个是虚拟的
系统。getProperty
不设置属性,如果放弃它的返回值,也不会做任何有用的事情。启动服务器后,根据平台的不同,使用netstat-p或lsof或类似工具来检查它正在侦听的地址和端口。在导出任何远程对象(包括注册表)之前,您需要在服务器JVM上设置它。
Client exception: java.rmi.ConnectionException: Connection refused to host: 169.254.x.x; nested exception is ...