【发布时间】:2013-05-19 23:03:23
【问题描述】:
我想编辑 RMI hello world 示例以在不同机器上使用客户端和服务器,但我遇到了解组返回错误。
如果我在 Netbeans 上的同一个项目中运行客户端和服务器,它们可以正常工作,但是当我拆分它们时,我将客户端的 try 语句编辑为:
try {
Registry registry = LocateRegistry.getRegistry("localhost");
String[] c = registry.list();
System.out.println(c[0].toString());
Remote lookup = Naming.lookup("HelloServer");
} catch (Exception e) {
System.out.println("HelloClient exception: " + e.getMessage());
}
如果没有Remote lookup = Naming.lookup("HelloServer");,打印命令会给出正确的“HelloServer”,但是当我创建远程对象时出现此错误:
HelloClient exception: error unmarshalling return; nested exception is:
java.lang.ClassNotFoundException: rmimain.Hello
我已经测试了该政策,它运行良好,非常感谢任何帮助。
【问题讨论】:
-
lookup() 不会“创建远程对象”。它在 RMI 注册表中查找它。这不是一回事。
-
我知道....我想从注册表中查找对象以从中创建一个远程对象....好吧,即使查找对象也给了我一个错误....在解决之前我无法继续
-
我重复一遍。 Registry.lookup() 不会创建远程对象。你也不行。远程对象在服务器上。你从查找中得到的是一个存根,你不会用它“创建”任何东西:你只是使用它。
-
好的...但我什至无法拥有存根... Naming.lookup() 给出了错误