【发布时间】:2019-01-12 14:16:19
【问题描述】:
我在 Java 应用程序中嵌入 Neo4j 社区版 (v 3.5.1) 并尝试使用 Tinkerpop API 打开图形。这样做时我遇到了异常,并怀疑最新版本的 Neo4j Tinkerpop API 实现与 Neo4J 3.5.1 不兼容。这个对吗?有解决方法吗?
具体来说,我正在尝试使用以下内容:Neo4j CE 3.5.1、Tinkerpop 3.3.5 和 Neo4j Tinkerpop API 实现 0.7-3.2.3。我怀疑 Neo4j Tinkerpop API 版本与最新版本的 Neo4j 不兼容,但 API 版本已经一年多没有更新了。我也尝试过使用 Neo4j CE 3.4.11,但这也不起作用。
但是,我可以让 Neo4j CE 3.2.13 与 Neo4j Tinkerpop API 0.6-3.2.2 一起使用,没有任何问题。
我的 POM 包含以下依赖项:
<dependency>
<groupId>org.apache.tinkerpop</groupId>
<artifactId>tinkerpop</artifactId>
<version>3.3.5</version>
<type>pom</type>
</dependency>
<dependency>
<groupId>org.apache.tinkerpop</groupId>
<artifactId>gremlin-driver</artifactId>
<version>3.3.5</version>
</dependency>
<dependency>
<groupId>org.neo4j</groupId>
<artifactId>neo4j</artifactId>
<version>3.5.1</version>
</dependency>
<dependency>
<groupId>org.apache.tinkerpop</groupId>
<artifactId>neo4j-gremlin</artifactId>
<version>3.3.5</version>
</dependency>
<dependency>
<groupId>org.neo4j</groupId>
<artifactId>neo4j-tinkerpop-api-impl</artifactId>
<version>0.7-3.2.3</version>
</dependency>
在我的 Java 代码中,我试图打开如下图:
Configuration configuration = new BaseConfiguration();
configuration.addProperty("gremlin.graph", "org.apache.tinkerpop.gremlin.neo4j.structure.Neo4jGraph");
configuration.addProperty("gremlin.neo4j.directory", "/neo4jpoc");
graph = Neo4jGraph.open(configuration);
当尝试使用它打开图表时,我得到以下异常:
Exception in thread "main" java.util.ServiceConfigurationError: org.neo4j.configuration.LoadableConfig: Provider org.neo4j.kernel.impl.enterprise.configuration.EnterpriseEditionSettings could not be instantiated
at java.util.ServiceLoader.fail(ServiceLoader.java:232)
at java.util.ServiceLoader.access$100(ServiceLoader.java:185)
at java.util.ServiceLoader$LazyIterator.nextService(ServiceLoader.java:384)
at java.util.ServiceLoader$LazyIterator.next(ServiceLoader.java:404)
at java.util.ServiceLoader$1.next(ServiceLoader.java:480)
at java.util.Iterator.forEachRemaining(Iterator.java:116)
.....
Caused by: java.lang.NoSuchMethodError: org.neo4j.kernel.configuration.Settings.setting(Ljava/lang/String;Ljava/util/function/Function;Ljava/lang/String;)Lorg/neo4j/graphdb/config/BaseSetting;
at org.neo4j.kernel.impl.enterprise.configuration.EnterpriseEditionSettings.<clinit>(EnterpriseEditionSettings.java:46)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:408)
.....
同样,我在使用 Neo4j v. 3.2.13 时没有任何问题,但我想使用最新版本或至少 v. 3.4.11。
谢谢。任何帮助深表感谢。
【问题讨论】:
标签: neo4j tinkerpop3