0

私は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.電卓.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 occured in server thread; ネストされた例外は次のとおりです: java.rmi.UnmarshalException: 引数の非整列化エラー。ネストされた例外: java.lang.ClassNotFoundException: rmi.Calculator

4

1 に答える 1

0

CalculatorServer プログラムとは別のプロセスである RMI レジストリを実行していないようです。これは、Java bin ディレクトリにあります。起動するまで少し待ってから、コードをもう一度試してください。

于 2013-03-29T09:51:14.283 に答える