我为RMI的客户编写了以下代码。但是得到
java.rmi.ConnectException: Connection refused to host: localhost; nested
exception is:
java.net.ConnectException: Connection refused: connect
代码:
import java.rmi.*;
import java.net.*;
import java.rmi.registry.*;
class client
{
public static void main(String [] ars)
{
Iface serv;
Registry r;
String serveraddr = ars[0];
String serverport = ars[1];
String text = "Hey jude";
System.out.println("Sending" + text);
try{
r = LocateRegistry.getRegistry(
serveraddr,
(new Integer(serverport)).intValue()
);
serv = (Iface) r.lookup("rmi://server");
serv.receive(text);
}
catch(Exception e){
System.out.println(e);
}
}
}
答案 0 :(得分:11)
如果您在绑定,重新绑定或查找时获得该功能,则注册表未运行。如果你进行远程调用,请参阅Javadoc随附的RMI FAQ中的A.1项,如果你正在运行Linux,还要检查你的/ etc / hosts文件是否将127.0.0.1映射到localhost和你的真实的IP地址到你的真实主机名 - 这是一些Linux发行版中的常见问题。
答案 1 :(得分:0)
我遇到了同样的问题。这很愚蠢但只是我忘了启动RMI注册过程。
因此,您还需要运行RMI注册表进程
rmiregistry
在尝试使用RMI注册表重新绑定(address,obj)之前。