2014-05-13 59 views
1

如果查找返回null應該怎樣做?我使用Lookup.getDefault()。這是用於找出對象的實例查找org.openide.util.Lookup()。一般模式是通過一類對象,然後取回該類或空的一個實例。Lookup.getDefault()。查找()返回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類,您將創建一個名爲org.gephi.streaming.server.ServerControllerFactory一個文本文件,該文件將包含文字org.gephi.streaming.server.impl.ServerControllerFactory

0

對我來說,我是想叫lookup上只需要@ServiceProvider類裝飾是這樣的:

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