Lookup.getDefault().lookup() returns null



如果查找返回null应该怎么做?我使用的是用于查找对象实例的org.openide.util.Lookup的Lookup.getDefault().lookup()。一般模式是传递一个Class对象,然后返回该类的一个实例或null。

我在下面的代码中使用它:

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

由于没有找到任何距离,因此对于' server ', ' controllerFactory ', ' controller '这些都返回null。我需要处理这种情况,以便我可以使用这些对象来访问方法,如:

controllerFactory.createServerController(graph)
server.register(serverController, context)

我怎样才能做到这一点?

您需要在Eclipse源文件夹中创建一个META-INF/services文件夹。然后,为每个类在META-INF/services文件夹中创建一个文本文件。文本文件的名称是类类型的全名(包括包位置),文本文件的内容是实现类的全名(包括包位置)(不一定与类的名称相同)。

例如,对于ServerControllerFactory类,您将创建一个名为org.gephi.streaming.server.ServerControllerFactory的文本文件,该文件包含的文本为org.gephi.streaming.server.impl.ServerControllerFactory

对于我来说,我试图调用lookup的类只需要像这样的@ServiceProvider装饰:

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

相关内容

  • 没有找到相关文章

最新更新