2014-05-13 29 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 ....