当我运行我的RMI应用程序时,它正在工作但是当我在不同地址的不同PC上尝试我的代码时,我收到此错误:
java.rmi.UnmarshalException:错误解组返回;嵌套 例外是:
java.lang.ClassNotFoundException:zz.INTERFCE at sun.rmi.registry.RegistryImpl_Stub.lookup(未知来源)at java.rmi.Naming.lookup(未知来源)at CLIENT $ 2.actionPerformed(CLIENT.java:112)。 。
好的,这是我的代码: 服务器的一面
try {
System.setProperty("java.security.policy","C:\\DERNIER\\src\\security.policy");
System.setSecurityManager(new RMISecurityManager());
registre = LocateRegistry.createRegistry(Integer.parseInt(textport.getText()));
IMPLIEMENT obj=new IMPLIEMENT();
registre.rebind("Hello1",obj);
list1.add("serveur is lisning");
cpt++;
} catch (RemoteException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
客户方
try {
user=txtUN.getText();
client=new CLIENT_IMPLMENT(rsa,user);
hello= (INTERFCE) Naming.lookup("rmi://"+textadressz.getText()+":"+Integer.parseInt(txtport.getText())+"/Hello1");
hello.connecté((CLIENT_INTERFCE)client,user,rsa.getN(),rsa.getE());
cpt++;
} catch (RemoteException | MalformedURLException | NotBoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
PS:我的应用程序在localhoste中运行良好
答案 0 :(得分:1)
你错误地说明了这个问题。找不到的班级是zz.INTERFCE
。这不是存根。它实际上似乎是一个远程接口。它需要部署在客户端。否则客户无论如何都无法做任何事情。
答案 1 :(得分:0)
似乎双方必须具有相同的包名称(客户端和服务器。