注册表RMI无法找到存根类

时间:2015-04-28 03:05:40

标签: java rmi

当我运行我的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中运行良好

2 个答案:

答案 0 :(得分:1)

你错误地说明了这个问题。找不到的班级是zz.INTERFCE。这不是存根。它实际上似乎是一个远程接口。它需要部署在客户端。否则客户无论如何都无法做任何事情。

答案 1 :(得分:0)

似乎双方必须具有相同的包名称(客户端和服务器。