2013-03-29 54 views
0

我是新来的Java RMI,我正在跟随一个教程来了解它。它使用一台服务器,代码列表如下用于获取服务器连接到Java RMI服务器

  1. CalculatorServer.java

    public class CalculatorServer { 
         public CalculatorServer(){ 
          try { 
           Calculator c = new CalculatorImpl(); 
           Naming.rebind("rmi://localhost:1099/CalculatorService", c); 
          } catch (Exception e) { 
           System.out.println("Trouble"+e); 
          } 
         } 
         public static void main(String args[]){ 
          new CalculatorServer(); 
         } 
        } 
    
  2. CalculatorImpl.java

    public class CalculatorImpl extends UnicastRemoteObject implements Calculator { 
    
        //constructor 
        public CalculatorImpl() throws RemoteException { 
         super(); 
        } 
    
        //@Override 
        public long add(long a, long b) throws RemoteException { 
         return a + b; 
        } 
    
        //@Override 
        public long sub(long a, long b) throws RemoteException { 
         return a - b; 
        } 
    
        //@Override 
        public long mul(long a, long b) throws RemoteException { 
         return a * b; 
        } 
    
        // @Override 
        public long div(long a, long b) throws RemoteException { 
         return a/b; 
        } 
    } 
    

3.Calculator .java

public interface Calculator extends Remote{ 
    public long add(long a, long b) throws RemoteException; 
    public long sub(long a, long b) throws RemoteException; 
    public long mul(long a, long b) throws RemoteException; 
    public long div(long a, long b) throws RemoteException; 
    } 

当我调试程序时,这是netbeans ide控制台发生的错误; 它说这个错误:Troublejava.rmi.ServerException:在服务器线程中发生RemoteException;嵌套的异常是: java.rmi.UnmarshalException:错误解组参数;嵌套的异常是: java.lang.ClassNotFoundException:rmi.Calculator

+1

rmiregistry必须在其classpath上有接口类。 – jtahlborn

+0

你可以发布客户代码吗? –

回答

0

这听起来像你没有运行RMI注册表,这是从你的CalculatorServer程序单独的过程。它位于你的java bin目录中。给它一些启动时间,然后再次尝试你的代码。

+0

以及如何启动它以便我可以再试一次? – Alphy

+0

要启动RMI注册表,您必须找到位于Java目录中的“rmiregistry.exe”。如果您无法找到它,请尝试搜索它(可能在您的C驱动器上)。 – CapnSmack

+0

感谢您的路径问题,它帮助了我很多,现在服务器已经启动,我编辑了问题并添加了更多错误清晰的模块 – Alphy