Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Neo4j 无法从RestTraverser访问迭代器(),它给出了异常java.lang.IllegalAccessError_Neo4j_Graph Databases_Graph Traversal - Fatal编程技术网

Neo4j 无法从RestTraverser访问迭代器(),它给出了异常java.lang.IllegalAccessError

Neo4j 无法从RestTraverser访问迭代器(),它给出了异常java.lang.IllegalAccessError,neo4j,graph-databases,graph-traversal,Neo4j,Graph Databases,Graph Traversal,我正在使用Neo4JJavaREST绑定项目实现遍历框架。 代码如下: RestAPI db = new RestAPIFacade("http://localhost:7474/db/data"); RestNode n21 = db.getNodeById(21); Map<String,Object> traversalDesc = new HashMap<String, Object>(); traversalDesc.put("order", "breadth_

我正在使用Neo4JJavaREST绑定项目实现遍历框架。 代码如下:

RestAPI db = new RestAPIFacade("http://localhost:7474/db/data");
RestNode n21 = db.getNodeById(21);
Map<String,Object> traversalDesc = new HashMap<String, Object>();
traversalDesc.put("order", "breadth_first");
traversalDesc.put("uniqueness", "node_global");
traversalDesc.put("uniqueness", "relationship_global");
traversalDesc.put("returnType", "fullpath");
traversalDesc.put("max_depth", 2);
RestTraverser traverser = db.traverse(n21, traversalDesc);
Iterable<Node> nodes = traverser.nodes();
System.out.println("All Nodes:");      // First Task
for(Node n:nodes){
System.out.println(n.getId());
}
Iterable<Relationship> rels = traverser.relationships();
System.out.println("All Relations:");  // Second Task
for(Relationship r:rels){
System.out.println(r.getId());
}
Iterator<Path> paths = traverser.iterator();  // Third Task
while(paths.hasNext()){
    System.out.println(paths.next());
}
请任何人检查为什么会发生这种情况,或者如果我做错了,那么正确的方法是什么。
提前感谢。

我不认为通过REST DB绑定使用Neo4j遍历框架得到正确支持,也不建议这样做。如果您通过REST进行遍历,那么随着遍历的进行,将通过网络检索每个节点和每个关系,从而为遍历带来巨大的开销

编辑:上述说法不正确,REST遍历程序比我想象的要聪明

一般来说,使用Cypher和使用JDBC访问Neo4j服务器会更快。请在此处阅读有关JDBC的更多信息:


如果您真的想使用遍历框架,那么应该使用服务器扩展,它允许您设计一个在服务器本身上运行的遍历,然后只在网络上移动遍历的结果。在此处阅读有关服务器扩展的更多信息:

您可以共享完整的stacktrace吗?您的客户端项目中有什么neo4j版本?java rest绑定的哪个版本?它们应该匹配。我使用2.0.1 neo4j和java rest绑定(neo4j rest graphdb.jar)得到了相同的
java.lang.IllegalAccessError:org/neo4j/helpers/collection/WrappingResourceIterator
。看起来,
org.neo4j.helpers.collection.WrappingResourceIterator
已在中制作
package
visbile,但java rest绑定正在使用自己的
public
?!@因此,如果您在同一个类路径中同时拥有neo4j-kernel.jar和neo4j-rest-graphdb.jar,则会首先获取前者并导致错误。实际上,rest遍历器会收集客户端上的信息,并将遍历描述发送到服务器以执行。
java.lang.IllegalAccessError: tried to access class org.neo4j.helpers.collection.WrappingResourceIterator from class org.neo4j.rest.graphdb.traversal.RestTraverser