2014-05-13 7 views
1

조회가 null을 반환하면 어떻게해야합니까? Lookup.getDefault()를 사용하고 있는데, 객체의 인스턴스를 찾는 데 사용되는 org.openide.util.Lookup의 lookup()입니다. 일반적인 패턴은 Class 객체를 전달하고 해당 클래스 또는 null의 인스턴스를 반환하는 것입니다.Lookup.getDefault(). lookup()이 null을 반환합니다.

나는 아래의 코드를 사용하고 있습니다 :

StreamingServer server = Lookup.getDefault().lookup(StreamingServer.class); 
ServerControllerFactory controllerFactory = Lookup.getDefault().lookup(ServerControllerFactory.class); 
StreamingController controller = Lookup.getDefault().lookup(StreamingController.class); 

더 istances이 발견되지 않기 때문에, 널 (null)이, 'server', 'controllerFactory', 'controller'의 각각 반환됩니다. 이러한 상황을 처리해야하기 때문에 다음과 같은 메소드에 액세스 할 때이 객체를 사용할 수 있습니다.

controllerFactory.createServerController(graph) 

server.register(serverController, context) 

어떻게하면됩니까?

+0

Eclipse에서 프로젝트를 실행 중이며 API가 빌드 경로에 .jar 파일을 추가하는 것을 참조했습니다. – user1727270

답변

0

Eclipse 소스 폴더에 META-INF/services 폴더를 만들어야합니다. 그런 다음 각 클래스에 대해 META-INF/services 폴더에 텍스트 파일을 만듭니다. 텍스트 파일의 이름은 클래스 유형의 전체 이름 (패키지 위치 포함)이며 텍스트 파일의 내용은 구현 클래스의 전체 이름 (패키지 위치 포함)입니다 (반드시 동일한 이름은 아님). 클래스의).

예를 들어, ServerControllerFactory 클래스, 난 그냥 @ServiceProvider 필요에 lookup를 호출하려고했던 클래스를 당신은 org.gephi.streaming.server.ServerControllerFactory라는 텍스트 파일을 생성하고이 파일이 포함됩니다 텍스트가 나를 위해 org.gephi.streaming.server.impl.ServerControllerFactory

0

입니다 이런 장식은 다음과 같습니다.

@ServiceProvider(service = MyClassHere.class) 
public final class MyClassHere ....