使用rmi时发生java.net.ConnectException

使用rmi时发生java.net.ConnectException,java,rmi,Java,Rmi,当我得到以下代码时,我正在阅读Head First Design Patterns一书: import java.rmi.*; import java.rmi.*; public class GumballMachineTestDrive { public static void main(String[] args) { GumballMachine gumballMachine = null; int count = 0; try

当我得到以下代码时,我正在阅读Head First Design Patterns一书:

import java.rmi.*;
import java.rmi.*;

public class GumballMachineTestDrive {

    public static void main(String[] args) {
        GumballMachine gumballMachine = null;
        int count = 0;

        try {
            count = Integer.parseInt(args[1]);
            gumballMachine = new GumballMachine(args[0], count);
            Naming.rebind("//" + args[0] + "/gumballmachine", gumballMachine);
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }
}
正如他们在我运行这段代码之前在书中所说的,我确保我有运行后台的rmi注册表,但是当我编写这段代码时

C:\Users\Vision\Downloads\Desktop\New folder\StateAndProxy\build\classes>java 
gumball.GumballMachineTestDrive santafe.mightygumball.com 100
在命令提示符中,我遇到了这个错误

java.rmi.ConnectException: Connection refused to host: santafe.mightygumball.com; nested 
    exception is:
    java.net.ConnectException: Connection timed out: connect
    at java.rmi/sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:623)
    at java.rmi/sun.rmi.transport.tcp.TCPChannel.createConnection(TCPChannel.java:209)
    at java.rmi/sun.rmi.transport.tcp.TCPChannel.newConnection(TCPChannel.java:196)
    at java.rmi/sun.rmi.server.UnicastRef.newCall(UnicastRef.java:343)
    at java.rmi/sun.rmi.registry.RegistryImpl_Stub.rebind(RegistryImpl_Stub.java:150)
    at java.rmi/java.rmi.Naming.rebind(Naming.java:177)
    at gumball.GumballMachineTestDrive.main(GumballMachineTestDrive.java:17)
    Caused by: java.net.ConnectException: Connection timed out: connect
    at java.base/sun.nio.ch.Net.connect0(Native Method)
    at java.base/sun.nio.ch.Net.connect(Net.java:493)
    at java.base/sun.nio.ch.Net.connect(Net.java:482)
    at java.base/sun.nio.ch.NioSocketImpl.connect(NioSocketImpl.java:588)
    at java.base/java.net.SocksSocketImpl.connect(SocksSocketImpl.java:339)
    at java.base/java.net.Socket.connect(Socket.java:603)
    at java.base/java.net.Socket.connect(Socket.java:552)
    at java.base/java.net.Socket.<init>(Socket.java:475)
    at java.base/java.net.Socket.<init>(Socket.java:249)
    at 
    java.rmi/sun.rmi.transport.tcp.TCPDirectSocketFactory.createSocket
    (TCPDirectSocketFactory.java:40)
    at java.rmi/sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:617)
    ... 6 more
java.rmi.ConnectException:连接拒绝托管:santafe.mightygumball.com;嵌套
例外情况是:
java.net.ConnectException:连接超时:连接
位于java.rmi/sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:623)
位于java.rmi/sun.rmi.transport.tcp.tcpcchannel.createConnection(tcpcchannel.java:209)
位于java.rmi/sun.rmi.transport.tcp.TCPChannel.newConnection(TCPChannel.java:196)
位于java.rmi/sun.rmi.server.UnicastRef.newCall(UnicastRef.java:343)
位于java.rmi/sun.rmi.registry.RegistryImpl\u Stub.rebind(RegistryImpl\u Stub.java:150)
位于java.rmi/java.rmi.Naming.rebind(Naming.java:177)
位于gumball.GumballMachineTestDrive.main(GumballMachineTestDrive.java:17)
原因:java.net.ConnectException:连接超时:连接
位于java.base/sun.nio.ch.Net.connect0(本机方法)
位于java.base/sun.nio.ch.Net.connect(Net.java:493)
位于java.base/sun.nio.ch.Net.connect(Net.java:482)
位于java.base/sun.nio.ch.NioSocketImpl.connect(NioSocketImpl.java:588)
位于java.base/java.net.socksocketimpl.connect(socksocketimpl.java:339)
位于java.base/java.net.Socket.connect(Socket.java:603)
位于java.base/java.net.Socket.connect(Socket.java:552)
位于java.base/java.net.Socket(Socket.java:475)
位于java.base/java.net.Socket(Socket.java:249)
在
java.rmi/sun.rmi.transport.tcp.TCPDirectSocketFactory.createSocket
(TCPDirectSocketFactory.java:40)
位于java.rmi/sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:617)
... 还有6个

你知道问题出在哪里吗?

看来“santafe.mightygumbal.com”套接字的主机不存在。因此,您尝试访问一个不在那里的套接字。无论如何,您只能重新绑定和解除绑定到本地
注册表
,因此将主机名指定为除
localhost
之外的任何内容都是没有意义的。