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

时间:2014-05-13 20:52:54

标签: java graph toolkit gephi graphstream

我正在尝试使用Gephi工具包创建一个普通图并将其流式传输到Gephi GUI。我正在关注工具包和流媒体插件教程。 我很难让我的代码工作,因为查找API没有返回有效值。在调试时,我发现下面的Lookup方法都返回null值,因为我在使用这些对象访问其他方法时遇到了麻烦。

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

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

作为服务器'或者' controllerFactory'为null,使用' server'访问任何方法或者' controllerFactory'然后,对象将抛出NullPointerException。例如,在:

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

这是我的代码:

//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);

解决此问题的任何输入都会有所帮助。

1 个答案:

答案 0 :(得分:0)

如果无法访问gephi工具包的META-inf/services文件夹,可能会发生这种情况;例如当你合并罐子;当你尝试进行服务器端部署时,这种情况尤为常见。

P.S。类文件在那里;所以没有抛出Class Not Found异常;但服务无法找到;有关详细信息,请参阅http://docs.oracle.com/javase/7/docs/api/java/util/ServiceLoader.html