简体   繁体   English

使用工具包将图形流式传输到Gephi:NullPointerException

[英]Streaming Graph to Gephi using toolkit : NullPointerException

I'm trying to create a normal graph and stream it to Gephi GUI using the Gephi toolkit. 我正在尝试创建一个普通图,并使用Gephi工具包将其流式传输到Gephi GUI。 I am following the the toolkit and the streaming plugin tutorials. 我正在关注工具包和流插件教程。 I am having difficulty getting my code to work because the lookup API is not returning valid values. 我很难使我的代码正常工作,因为查找API未返回有效值。 On debug, I could find that both the Lookup methods below return null values because of which I am having trouble in accessing other methods using these objects. 在调试时,我发现下面的两个Lookup方法都返回空值,因此我在使用这些对象访问其他方法时遇到了麻烦。

StreamingServer server = Lookup.getDefault().lookup(StreamingServer.class); StreamingServer服务器= Lookup.getDefault()。lookup(StreamingServer.class);

ServerControllerFactory controllerFactory = Lookup.getDefault().lookup(ServerControllerFactory.class); ServerControllerFactory controllerFactory = Lookup.getDefault()。lookup(ServerControllerFactory.class);

As both 'server' or 'controllerFactory' are null, accessing any methods using 'server' or 'controllerFactory' objects would then throw NullPointerException. 由于“服务器”或“ controllerFactory”均为空,因此使用“服务器”或“ controllerFactory”对象访问任何方法都将引发NullPointerException。 For example, at : 例如,在:

ServerController serverController = controllerFactory.createServerController(graph); ServerController serverController = controllerFactory.createServerController(graph); server.register(serverController, context); server.register(serverController,context);

This is the code I have: 这是我的代码:

//Init a project - and therefore a workspace
    ProjectController pc = Lookup.getDefault().lookup(ProjectController.class);
    pc.newProject();
    Workspace workspace = pc.getCurrentWorkspace();

    // Get the graph instance
    GraphController graphController = Lookup.getDefault().lookup(GraphController.class);
    GraphModel graphModel = graphController.getModel();
    Graph graph = graphModel.getGraph();

    //Add sample graph structure data
       Node n1;
       Node n2;
       n1 = graphModel.factory().newNode();
       n2 = graphModel.factory().newNode();
       Edge edge = graphModel.factory().newEdge(n1, n2);

       graph.addNode(n1);
       graph.addNode(n2);
       graph.addEdge(edge);

       n1.getNodeData().setLabel("Node 1");
       n2.getNodeData().setLabel("Node 2");
       edge.getEdgeData().setLabel("Edge 1");

       System.out.println(graph.getNodeCount() + " nodes");
       System.out.println(graph.getEdgeCount() + " edges");
       System.out.println();


    StreamingServer server = Lookup.getDefault().lookup(StreamingServer.class);

    ServerControllerFactory controllerFactory = Lookup.getDefault().lookup(ServerControllerFactory.class);
    ServerController serverController = controllerFactory.createServerController(graph);

    String context = "/mycontext";
    server.register(serverController, context);

Any inputs to solve this would be helpful. 解决此问题的任何输入都将有所帮助。

This could happen if META-inf/services folder of gephi toolkit is not accessible; 如果无法访问gephi工具包的META-inf/services文件夹,则会发生这种情况; eg when you merge jars; 例如,当您合并罐子时; etc. especially common when you try to do server side deployment. 等,尤其是在尝试进行服务器端部署时。

ps The class files are there; ps类文件在那里; so no Class Not Found exception is thrown; 因此不会抛出Class Not Found异常; but services are not being able to be located; 但是无法找到服务; for more info see http://docs.oracle.com/javase/7/docs/api/java/util/ServiceLoader.html 有关更多信息,请参见http://docs.oracle.com/javase/7/docs/api/java/util/ServiceLoader.html

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM