【问题标题】:embedded Neo4j in JVM在 JVM 中嵌入 Neo4j
【发布时间】:2016-07-12 21:47:42
【问题描述】:

我正在尝试从我的 java 程序中访问 neo4j 数据库。我尝试创建一个新的数据库并对其进行查询,并按以下方式成功运行:http://neo4j.com/docs/java-reference/current/#tutorials-java-embedded

代码:

String DB_PATH = "C:/Users/singsand/Documents/Neo4j/newdb";
    File f=new File(DB_PATH);
    GraphDatabaseService graphDb =   new GraphDatabaseFactory().newEmbeddedDatabase(f);
    try (Transaction tx=graphDb.beginTx()){
        graphDb.execute("CREATE (table1:car {name:'car1'})");
        tx.success();
    }

但后来我通过 Neo4j 社区版工具将此数据库作为服务器启动,并通过我的浏览器访问它。

之后,当我执行上面使用的相同 java 程序时,它会抛出以下错误:

    Exception in thread "main" java.lang.RuntimeException: Error starting org.neo4j.kernel.impl.factory.CommunityFacadeFactory, C:\Users\singsand\Documents\Neo4j\newdb
    at org.neo4j.kernel.impl.factory.GraphDatabaseFacadeFactory.newFacade(GraphDatabaseFacadeFactory.java:144)
    at org.neo4j.kernel.impl.factory.CommunityFacadeFactory.newFacade(CommunityFacadeFactory.java:40)
    at org.neo4j.kernel.impl.factory.GraphDatabaseFacadeFactory.newFacade(GraphDatabaseFacadeFactory.java:108)
    at org.neo4j.graphdb.factory.GraphDatabaseFactory.newDatabase(GraphDatabaseFactory.java:100)
    at org.neo4j.graphdb.factory.GraphDatabaseFactory.lambda$createDatabaseCreator$193(GraphDatabaseFactory.java:89)
    at org.neo4j.graphdb.factory.GraphDatabaseBuilder.newGraphDatabase(GraphDatabaseBuilder.java:183)
    at org.neo4j.graphdb.factory.GraphDatabaseFactory.newEmbeddedDatabase(GraphDatabaseFactory.java:65)
    at neo4j.neo4jdemo.App.main(App.java:41)
Caused by: org.neo4j.kernel.lifecycle.LifecycleException: Component 'org.neo4j.kernel.recovery.Recovery@62fca613' failed to initialize. Please see attached cause exception.
    at org.neo4j.kernel.lifecycle.LifeSupport$LifecycleInstance.init(LifeSupport.java:416)
    at org.neo4j.kernel.lifecycle.LifeSupport.init(LifeSupport.java:62)
    at org.neo4j.kernel.lifecycle.LifeSupport.start(LifeSupport.java:98)
    at org.neo4j.kernel.NeoStoreDataSource.start(NeoStoreDataSource.java:508)
    at org.neo4j.kernel.lifecycle.LifeSupport$LifecycleInstance.start(LifeSupport.java:434)
    at org.neo4j.kernel.lifecycle.LifeSupport.start(LifeSupport.java:107)
    at org.neo4j.kernel.impl.transaction.state.DataSourceManager.start(DataSourceManager.java:99)
    at org.neo4j.kernel.lifecycle.LifeSupport$LifecycleInstance.start(LifeSupport.java:434)
    at org.neo4j.kernel.lifecycle.LifeSupport.start(LifeSupport.java:107)
    at org.neo4j.kernel.impl.factory.GraphDatabaseFacadeFactory.newFacade(GraphDatabaseFacadeFactory.java:140)
    ... 7 more
Caused by: java.lang.IllegalArgumentException: Unrecognized log entry version -9. At position LogPosition{logVersion=0, byteOffset=16} and entry version null
    at org.neo4j.kernel.impl.transaction.log.entry.LogEntryVersion.byVersion(LogEntryVersion.java:147)
    at org.neo4j.kernel.impl.transaction.log.entry.VersionAwareLogEntryReader.readLogEntry(VersionAwareLogEntryReader.java:83)
    at org.neo4j.kernel.impl.transaction.log.LogEntryCursor.next(LogEntryCursor.java:50)
    at org.neo4j.kernel.recovery.LatestCheckPointFinder.find(LatestCheckPointFinder.java:77)
    at org.neo4j.kernel.recovery.PositionToRecoverFrom.apply(PositionToRecoverFrom.java:53)
    at org.neo4j.kernel.recovery.DefaultRecoverySPI.getPositionToRecoverFrom(DefaultRecoverySPI.java:112)
    at org.neo4j.kernel.recovery.Recovery.init(Recovery.java:72)
    at org.neo4j.kernel.lifecycle.LifeSupport$LifecycleInstance.init(LifeSupport.java:406)
    ... 16 more

我在其他 Stack Overflow 问题中看到了类似的错误,但无法使用他们的解决方案解决我的问题。

【问题讨论】:

  • 你删除了这个问题并重新发布了吗?我记得要求澄清您正在尝试使用相同的数据库文件同时运行独立服务器和嵌入式服务器
  • 不,我不想同时运行独立版本和嵌入式版本。所以我所做的是:将其作为嵌入式运行并在数据库中放置一些节点。然后通过 Neo4j 工具将其作为服务器启动,并在我的浏览器中查看。然后我从工具中停止了服务器。然后我尝试通过我的程序再次将它用作嵌入式。那是我收到此错误的时候。

标签: java neo4j


【解决方案1】:

如果我理解正确的话。您在应用程序中使用了 Neo4j 的嵌入式版本,而不是尝试在本地主机上启动 Neo4j 服务器。对吗?

Neo4j Server vs Embedded mode

问题是 Neo4j 嵌入式作为 Java 应用程序的一部分运行。 Neo4j 服务器是单独运行的独立服务。而且你不能将这两者结合在同一个数据库上。

如果您想在嵌入式数据库中使用 Neo4j 浏览器,这应该对您有所帮助 - http://graphaware.com/neo4j/2014/11/21/neo4j-browser-with-embedded.html

【讨论】:

  • 所以,我在我的程序中使用了 Neo4j 的嵌入式版本。该程序退出后,我通过 Neo4j 社区版工具启动了同一个数据库作为服务器,并从浏览器访问它。现在,当我运行嵌入了 db 的相同程序时,它会引发错误。所以从你说的我可以理解,我不能通过 Neo4j 工具将它用作服务,即使当时程序没有运行?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-05-29
  • 2021-02-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-08
相关资源
最近更新 更多