Я пытаюсь подключить Java к Neo4J для проекта.Я хочу подключить уже существующую базу данных Neo4J (локальную) к Java, но у меня появляется следующая ошибка:
Exception in thread "main" java.lang.RuntimeException: Error starting org.neo4j.kernel.impl.factory.GraphDatabaseFacadeFactory, /home/etudiants/helloStackOverflow/workspace/projetnosql/graph.db
at org.neo4j.kernel.impl.factory.GraphDatabaseFacadeFactory.initFacade(GraphDatabaseFacadeFactory.java:212)
at org.neo4j.kernel.impl.factory.GraphDatabaseFacadeFactory.newFacade(GraphDatabaseFacadeFactory.java:125)
at org.neo4j.graphdb.factory.GraphDatabaseFactory.newDatabase(GraphDatabaseFactory.java:137)
at org.neo4j.graphdb.factory.GraphDatabaseFactory.newEmbeddedDatabase(GraphDatabaseFactory.java:130)
at org.neo4j.graphdb.factory.GraphDatabaseFactory$1.newDatabase(GraphDatabaseFactory.java:107)
at org.neo4j.graphdb.factory.GraphDatabaseBuilder.newGraphDatabase(GraphDatabaseBuilder.java:199)
at org.neo4j.graphdb.factory.GraphDatabaseFactory.newEmbeddedDatabase(GraphDatabaseFactory.java:75)
at Main.main(Main.java:12)
Caused by: org.neo4j.kernel.lifecycle.LifecycleException: Component 'org.neo4j.kernel.NeoStoreDataSource@1a942c18' was successfully initialized, but failed to start. Please see the attached cause exception "No dependency satisfies type class org.neo4j.kernel.api.index.IndexProvider".
at org.neo4j.kernel.lifecycle.LifeSupport$LifecycleInstance.start(LifeSupport.java:466)
at org.neo4j.kernel.lifecycle.LifeSupport.start(LifeSupport.java:107)
at org.neo4j.kernel.impl.transaction.state.DataSourceManager.start(DataSourceManager.java:100)
at org.neo4j.kernel.lifecycle.LifeSupport$LifecycleInstance.start(LifeSupport.java:445)
at org.neo4j.kernel.lifecycle.LifeSupport.start(LifeSupport.java:107)
at org.neo4j.kernel.impl.factory.GraphDatabaseFacadeFactory.initFacade(GraphDatabaseFacadeFactory.java:208)
... 7 more
Caused by: org.neo4j.kernel.impl.util.UnsatisfiedDependencyException: No dependency satisfies type class org.neo4j.kernel.api.index.IndexProvider
at org.neo4j.kernel.impl.util.Dependencies.resolveDependency(Dependencies.java:73)
at org.neo4j.kernel.impl.util.Dependencies.resolveDependency(Dependencies.java:68)
at org.neo4j.kernel.NeoStoreDataSource.start(NeoStoreDataSource.java:387)
at org.neo4j.kernel.lifecycle.LifeSupport$LifecycleInstance.start(LifeSupport.java:445)
... 12 more
Мой pom.xml:
<properties>
<!-- to be overridden in sub modules -->
<java-module-name></java-module-name>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<commonslang>3.4</commonslang>
<commonsio>2.4</commonsio>
<jackson>2.8.11</jackson>
<httpclient>4.5.2</httpclient>
<junit>4.12</junit>
<assertj>3.8.0</assertj>
<slf4j>1.7.21</slf4j>
<logback>1.1.7</logback>
<mockito>2.2.29</mockito>
<!-- default for build, if no profiles invoked -->
<neo4j>3.0.4</neo4j>
<bolt>1.6.3</bolt>
<fast.classpath.scanner>2.18.1</fast.classpath.scanner>
<ogm.properties>ogm-bolt.properties</ogm.properties>
<neo4j.edition>enterprise</neo4j.edition>
<spotbugs.plugin.version>3.1.3</spotbugs.plugin.version>
</properties>
<dependencies>
<!-- https://mvnrepository.com/artifact/org.neo4j/neo4j-kernel -->
<dependency>
<groupId>org.neo4j</groupId>
<artifactId>neo4j-kernel</artifactId>
<version>3.0.4</version>
</dependency>
<!--Compile and Runtime Dependencies -->
<dependency>
<groupId>org.neo4j.driver</groupId>
<artifactId>neo4j-java-driver</artifactId>
<version>${bolt}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>${jackson}</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>${httpclient}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${slf4j}</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>${commonslang}</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>${commonsio}</version>
</dependency>
<!-- Embedded Driver Dependencies -->
<dependency>
<groupId>org.neo4j</groupId>
<artifactId>neo4j</artifactId>
<version>${neo4j}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.neo4j</groupId>
<artifactId>neo4j-cluster</artifactId>
<version>${neo4j}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.neo4j</groupId>
<artifactId>neo4j-ha</artifactId>
<version>${neo4j}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.neo4j</groupId>
<artifactId>neo4j-enterprise</artifactId>
<version>${neo4j}</version>
<scope>provided</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/org.neo4j/neo4j-graphdb-api -->
<dependency>
<groupId>org.neo4j</groupId>
<artifactId>neo4j-graphdb-api</artifactId>
<version>3.4.9</version>
</dependency>
</dependencies>
и мой Main.java:
import java.io.File;
import org.neo4j.graphdb.GraphDatabaseService;
import org.neo4j.graphdb.Transaction;
import org.neo4j.graphdb.factory.GraphDatabaseFactory;
public class Main {
public static void main(String[] args) {
//GraphDatabaseFactory dbFactory = new GraphDatabaseFactory();
File p = new File("/home/etudiants/helloStackOverflow/workspace/projetnosql/graph.db");
GraphDatabaseService db = new GraphDatabaseFactory().newEmbeddedDatabase(p);
db.shutdown();
System.out.println("ça marche!!!!!");
try (Transaction tx = db.beginTx()) {
// Perform DB operations
System.out.println("ça marche 2");
tx.success();
}
}
}
Очевидно, что проблема заключается в отсутствующей зависимости для удовлетворения класса org.neo4j.kernel.api.index.IndexProvider, но там указана зависимость kernel-api.
У вас есть идеи, как мне решить эту проблему?
Дополнительная информация:
IDE: Intellij
Maven: v1.8
Neo4J: v3.4.9
Я надеюсь, что предоставил достаточно информации, чтобы вы могли дать мне предложениео том, как решить проблему.