2014-04-28 2 views
1

Oracle 페이지에서 Hello World RMI 예제를 실행하려고했지만 오류가 계속 발생합니다. java.rmi.NoSuchObjectException : 테이블 java.rmi.NoSuchObjectException에서 그러한 목적 : sun.rmi.transport에서 테이블에 이런 개체RMI 해당 오브젝트 예외 없음

내가 점점 계속 오류가

서버 예외입니다. 일에서 sun.rmi.server.UnicastRef.invoke에서 StreamRemoteCall.exceptionReceivedFromServer sun.rmi.transport.StreamRemoteCall.executeCall (StreamRemoteCall.java:252)에서 (StreamRemoteCall.java:275) (UnicastRef.java:378) .rmi.registry.RegistryImpl_Stub.bind (알 수없는 소스) ( ) example.hello.Server.main

헬로 인터페이스 : (Server.java:26는) 다음

내가 사용하는 사이트에서 직접 촬영으로 코드입니다

패키지 example.hello;

package example.hello; 

import java.rmi.registry.Registry; 
import java.rmi.registry.LocateRegistry; 
import java.rmi.RemoteException; 
import java.rmi.server.UnicastRemoteObject; 

public class Server implements Hello { 

    public Server() {} 

    public String sayHello() { 
     return "Hello, world!"; 
    } 

    public static void main(String args[]) { 

    try { 
     Server obj = new Server(); 
     Hello stub = (Hello) UnicastRemoteObject.exportObject(obj,0); 

     // Bind the remote object's stub in the registry 
     Registry registry = LocateRegistry.getRegistry("localhost"); 
     registry.bind("Hello", stub); 

     System.err.println("Server ready"); 
     } catch (Exception e) { 
      System.err.println("Server exception: " + e.toString()); 
      e.printStackTrace(); 
     } 
    } 
} 

클라이언트 코드 :

package example.hello; 

import java.rmi.registry.LocateRegistry; 
import java.rmi.registry.Registry; 

public class Client { 

    private Client() {} 

    public static void main(String[] args) { 

     String host = "localhost"; 
     try { 
      Registry registry = LocateRegistry.getRegistry(host); 
      Hello stub = (Hello) registry.lookup("Hello"); 
      String response = stub.sayHello(); 
      System.out.println("response: " + response); 
     } catch (Exception e) { 
      System.err.println("Client exception: " + e.toString()); 
      e.printStackTrace(); 
     } 
    } 
} 

이 모든 의견이 크게 감사합니다

import java.rmi.Remote; 
import java.rmi.RemoteException; 

public interface Hello extends Remote { 
    String sayHello() throws RemoteException; 
} 

이것은 무엇을 내 서버 클래스입니다!

+1

가능한 복제본은 [java.rmi.NoSuchObjectException : 테이블에 해당 객체 없음]입니다 (http://stackoverflow.com/questions/645208/java-rmi-nosuchobjectexception-no-such-object- in-table) –

답변

4

레지스트리가 실행되고 있지 않습니다. rmiregistry 도구를 시작하거나 getRegistry()createRegistry().

으로 변경하십시오. 일부 JVM은 포트 1099에서 수신 중이며 레지스트리가 실행 중이 어서는 안되기 때문에 궁금합니다. 일반적으로 레지스트리가 없습니다. java.rmi.ConnectException.

+0

이 수정되었습니다. 고마워! – user2910237

-4

귀하의 인터페이스 방법은 공개 수정자를 가져야합니다.

+0

여전히 동일한 오류가 발생합니다. – user2910237

+1

인터페이스 메소드는 기본적으로 public입니다. 명시 적으로 언급 할 필요가 없습니다. –

+0

@SohailAnjum 여러분은 이것에 대해 틀 렸습니다. 그리고 여러분이 옳았다하더라도,이 예외는 발생하지 않을 것입니다. – EJP

관련 문제