2013-05-19 71 views
1

我想编辑RMI hello world示例以在不同机器上与客户端和服务器一起工作,但是我仍然处于解组返回错误的状态。Java RMI客户端和服务器分离机器

如果我的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 

我测试过的政策,它的正常工作,任何帮助,将不胜感激。

+0

可能的[Java RMI - ClassNotFound异常]的副本(http://stackoverflow.com/questions/13036566/java-rmi-classnotfound-exception) – EJP

+0

lookup()不'创建远程对象'。它在RMI注册表中查找它。这不是一回事。 – EJP

+0

我知道....我想从注册表中查找对象来创建一个远程对象....好的是,甚至查找对象给我一个错误....我可以在解决这个问题之前,我再重复一遍 – Santina

回答

0

您的客户端在其CLASSPATH上没有rmimain.Hello类。

+0

,我该如何解决?我试图添加到客户端的Hello接口,但它给出了相同的错误,我如何创建客户端上的服务器类的类路径? – Santina

+0

你试过怎么样?在你的问题中显示你做了什么。你最后一句话没有意义。 – EJP

+0

我已经将接口Hello添加到客户端项目,并且我已将rmimain.Hello类添加到CLASSPATH环境变量...当我回显%CLASSPATH%时,它会显示: C:\ Users \ Nina_2 \ Documents \ NetBeansProjects \ RMIMain \ build \ classes \ rmimain 我做对了吗?因为没有任何变化,它仍然给出相同的反编组返回错误。 – Santina