Потоковый график в 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