Java Neo4J意外停机或配置错误?

Java Neo4J意外停机或配置错误?,java,nullpointerexception,neo4j,Java,Nullpointerexception,Neo4j,原始桩 让我从我的代码开始。这是出现错误的代码片段 DatabaseModuleInterface dbModule = new DatabaseModuleImpl(); System.out.println(dbModule.getDb()); Traverser t = dbModule.getGraphTree(usernode); System.out.println("DBMODULE = " + dbModule.toString()); System.out.println("

原始桩

让我从我的代码开始。这是出现错误的代码片段

DatabaseModuleInterface dbModule = new DatabaseModuleImpl();
System.out.println(dbModule.getDb());
Traverser t = dbModule.getGraphTree(usernode);

System.out.println("DBMODULE = " + dbModule.toString());
System.out.println("USERNODE = " + usernode);
System.out.println("TRAVERSER1 = " + dbModule.getGraphTree(usernode));

    System.out.println("T IS NOT NULL");
    if (t.nodes() != null) {
        System.out.println("T NODES IS NOT NULL");
        for (Node node : t.nodes()) {
            if (node != null) {
                System.out.println("NODE IS NOT NULL");
            } else {
                System.out.println("NODE IS NULL");
            }
        }
    }
返回

INFO: EmbeddedGraphDatabase [C:\impactordb]
INFO: DBMODULE = be.archimiddle.impactor.modules.database.interfaces.DatabaseModuleImpl@bed5ea
INFO: USERNODE = Node[241]
INFO: TRAVERSER1 = org.neo4j.kernel.impl.traversal.TraverserImpl@ce2016
INFO: T IS NOT NULL
INFO: T NODES IS NOT NULL
然后出现以下堆栈跟踪错误

java.lang.NullPointerException
at org.neo4j.kernel.impl.nioneo.xa.ReadTransaction.nodeLoadLight(ReadTransaction.java:86)
at org.neo4j.kernel.impl.persistence.PersistenceManager.loadLightNode(PersistenceManager.java:82)
at org.neo4j.kernel.impl.core.NodeManager.getLightNode(NodeManager.java:423)
at org.neo4j.kernel.impl.core.NodeManager.getNodeForProxy(NodeManager.java:440)
at org.neo4j.kernel.InternalAbstractGraphDatabase$4.lookup(InternalAbstractGraphDatabase.java:660)
at org.neo4j.kernel.impl.core.NodeProxy.getRelationships(NodeProxy.java:98)
at org.neo4j.kernel.StandardExpander$RegularExpander.doExpand(StandardExpander.java:579)
at org.neo4j.kernel.StandardExpander$RelationshipExpansion.iterator(StandardExpander.java:194)
at org.neo4j.kernel.impl.traversal.TraversalBranchWithState.expandRelationshipsWithoutChecks(TraversalBranchWithState.java:78)
at org.neo4j.kernel.impl.traversal.TraversalBranchImpl.expandRelationships(TraversalBranchImpl.java:104)
at org.neo4j.kernel.impl.traversal.StartNodeTraversalBranch.next(StartNodeTraversalBranch.java:46)
at org.neo4j.kernel.impl.traversal.AsOneStartBranch.next(AsOneStartBranch.java:100)
at org.neo4j.kernel.PreorderDepthFirstSelector.next(PreorderDepthFirstSelector.java:52)
at org.neo4j.kernel.impl.traversal.TraverserIterator.fetchNextOrNull(TraverserIterator.java:64)
at org.neo4j.kernel.impl.traversal.TraverserIterator.fetchNextOrNull(TraverserIterator.java:33)
at org.neo4j.helpers.collection.PrefetchingIterator.hasNext(PrefetchingIterator.java:55)
at org.neo4j.helpers.collection.IteratorWrapper.hasNext(IteratorWrapper.java:42)
at com.archimiddle.impactor.action.navigation.ViewGraphAction.getGraphTree(ViewGraphAction.java:107)
第107行是代码段中的下一行:

for(Node node : t.nodes()){
我已经检查了所有的空值,但找不到任何内容。如果有人能帮助我,我将不胜感激

编辑

我使用此方法显示隐藏在图形中的树。我知道这个方法有效,因为我可以看到我的图表

只是在我使用tinkerpop蓝图中的Neo4jgraph添加节点之后,我再也不能使用该方法查看我的图形了。为了让Gremlin真正将节点添加到我的Neo4J图中,我必须在提交节点之前调用shutdown或stopTransaction

Neo4jgraph graph = new Neo4jGraph(my_graphdatabaseservice);
//ADD NODES HERE
//I USED TO DO THIS
neo4jgraph.shutdown();
//NOW I DO THIS
neo4jgraph.stopTransaction(Conclusion.SUCCESS);
我必须执行这两个操作之一,否则我的节点将无法通信。我必须使用蓝图添加它们,原因非常明确


我怀疑这与此有关,因为它只发生在我这样做之后…

问题与您发布的代码片段无关。那里一切正常

问题在于您的neo4j实现

尝试将以下参数添加到neo4j配置中

config.cache_classes=true config.threadsafe!
我知道如何将属性文件附加到嵌入式Neo4J,但我使用的是从GraphDatabaseFactory获得的默认配置。我还需要在我的属性文件中加入哪些其他设置,以便您提供的两个设置是唯一可以更改的设置…我添加了cache_classes=true,但没有帮助。我以为那是安全的!只是为了创业?我在原来的帖子中添加了一些东西,这可能会对情况有更多的了解。所以你实际上是在关闭数据库。这解释了Neo4j ReadTransaction类中产生的NPE。我担心stopTransaction会导致类似的问题。如果只是关于提交节点-是否尝试了以下操作:neo4jgraph.setTransactionModeTransactionGraph.Mode.AUTOMATIC;在自动模式下,事务基本上被忽略,即创建的每个项目都会立即保存在底层图形数据库中。这就是为什么我想在一次交易中做到这一点。但不知何故,我使用了您的两个配置参数,并在导入后手动清除了neo4J缓存,从而使事情得以顺利进行。