Потоковый график в Gephi с использованием инструментария: NullPointerException

Я пытаюсь создать нормальный график и передать его в графический интерфейс Gephi с помощью инструментария Gephi. Я следую за инструментарием и учебными пособиями по потоковым плагинам. Я испытываю трудности с тем, чтобы заставить мой код работать, потому что API поиска не возвращает допустимые значения. При отладке я мог обнаружить, что оба метода Lookup ниже возвращают нулевые значения, из-за чего у меня возникают проблемы с доступом к другим методам, использующим эти объекты.

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

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

Поскольку оба параметра 'server' или '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 ответ

Это может произойти, если META-inf/services папка с инструментарием Gephi недоступна; например, когда вы объединяете банки; и т.д. особенно часто, когда вы пытаетесь выполнить развертывание на стороне сервера.

ps файлы классов есть; так что исключение Class Not Found не выдается; но услуги не могут быть найдены; Для получения дополнительной информации см. http://docs.oracle.com/javase/7/docs/api/java/util/ServiceLoader.html

Другие вопросы по тегам