2017-11-05 3 views
-1

rmi를 사용하여 서비스 등록을 구현하려고 시도했습니다. 그것은 전구와 서버 사이에서 원격으로 제어되는 전구를 시연합니다.해결할 수없는 인터페이스 구현 오류

:

public class RMILightBulbImpl extends java.rmi.server.UnicastRemoteObject 
    implements RMILightBulb { 

    public RMILightBulbImpl() throws java.rmi.RemoteException{ 

      setBulb(false); 
    } 

    private boolean lightOn; 

    public void on() throws java.rmi.RemoteException{ 
     setBulb(true); 
    } 

    public void off() throws java.rmi.RemoteException{ 
     setBulb(false); 
    } 


    public boolean isOn() throws java.rmi.RemoteException{ 
     return getBulb(); 
    } 

    public void setBulb(boolean value){ 
     lightOn = value; 
    } 

    public boolean getBulb(){ 
     return lightOn; 
    } 


} 

이 컴파일을 시도, 나는이 오류가 : 나는 RMILightBulb 인터페이스를 구현하려고 할 경우

public interface RMILightBulb extends java.rmi.Remote{ 

     public void on() throws java.rmi.RemoteException{} 
     public void off() throws java.rmi.RemoteException{} 
     public boolean isOn() throws java.rmi.RemoteException{} 
} 

이것은 :

이 내 전구 인터페이스입니다

error: RMILightBulbImpl is not abstract does not override abstract method isOn() in RMILightBulb 

@Override 주석을 사용해 보았지만이 문제가 계속 발생했습니다. 이것에 대한 어떤 도움도 크게 감사 할 것입니다.

+0

전체'RMILightBulbImpl' 코드를 추가 할 수 있습니까? 왜냐하면 지금 서 있기 때문입니다. 실제로 컴파일되지 않는다는 사실은 말할 것도없고, 추상적 인 것입니다. – asgs

+0

RMILightBulbImpl 코드 –

+0

이 추가되었습니다. duffymo가 지적했듯이, 인터페이스 메소드는 추상적이지 않으므로, 처음부터 어떻게 컴파일했는지 궁금합니다. – asgs

답변

2

틀린. 다음과 같이 표시되어야합니다.

public interface RMILightBulb extends java.rmi.Remote { 

     void on() throws java.rmi.RemoteException; 
     void off() throws java.rmi.RemoteException; 
     boolean isOn() throws java.rmi.RemoteException; 
} 

왜 RMI가 귀찮은가요? CORBA가 죽었어. 간단하고 개방적인 승리로 세계는 웹 서비스로 옮겼습니다.

+1

메소드 끝에서 {}이 (가) 제거되었습니다. JDK 8 및 기본값을 사용하지 않는 한 구현되지 않습니다. – duffymo

+0

연구의 일환으로 RMI 탐험 –

+1

왜 시간을 낭비해서 시간을 낭비하게됩니까? RMI 또는 애플릿을 사용하지 마십시오. – duffymo