2013-03-29 2 views
0

저는 Java RMI를 처음 사용하기 때문에 이에 대해 배우기위한 자습서를 진행하고있었습니다. 이 코드 샘플 3.Calculator CalculatorImpl.javaJava RMI 서버에 연결

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(); 
     } 
    } 
  • 서버

    1. 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; 
          } 
      } 
      

    을 얻기를 위해 다음과 같습니다, 서버를 사용 .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 console에 의한 오류입니다. 이 오류가 발생했습니다 : Troublejava.rmi.ServerException : RemoteException이 서버 스레드에서 발생했습니다. 중첩 예외는 다음과 같습니다. java.rmi.UnmarshalException : 인수를 비 정렬 화하는 중에 오류가 발생했습니다. 중첩 예외는 다음과 같습니다. java.lang.ClassNotFoundException : rmi.Calculator

  • +1

    rmiregistry는 classpath에 인터페이스 클래스가 있어야합니다. – jtahlborn

    +0

    고객 코드를 게시 할 수 있습니까? –

    답변

    0

    CalculatorServer 프로그램과 별도의 프로세스 인 RMI 레지스트리를 실행하지 않는 것처럼 들립니다. 이 파일은 java bin 디렉토리에 있습니다. 시작할 시간을주고 코드를 다시 시험해보십시오.

    +0

    그리고 다시 시도 할 수 있도록 어떻게 시작하나요? – Alphy

    +0

    RMI 레지스트리를 시작하려면 Java 디렉토리에 "rmiregistry.exe"가 있어야합니다. 찾는 데 어려움이있는 경우 C 드라이브에서 검색해보십시오. – CapnSmack

    +0

    경로 문제를 보내 주셔서 감사합니다. 서버가 다되었지만 질문을 편집하고 오류 명확성을 위해 더 많은 모듈을 추가했습니다. – Alphy