嵌入式Neo4j SPI类(lucene PostingsFormat)错误

Sea*_*udt 5 java lucene intellij-idea neo4j maven

我已经将Neo4j 3.0.1嵌入到Java 8应用程序中,但我一直遇到SPI问题.

从IntelliJ内部运行会产生预期的正确结果,但是一旦我将工件构建到JAR,运行它并尝试写入Neo4j,我得到以下异常:

Caused by: org.neo4j.kernel.impl.store.UnderlyingStorageException: java.lang.IllegalArgumentException: An SPI class of type org.apache.lucene.codecs.PostingsFormat with name 'BlockTreeOrds' does not exist.  You need to add the corresponding JAR file supporting this SPI to your classpath.  The current classpath supports the following names: [Lucene50]
    at org.neo4j.kernel.impl.transaction.command.LabelUpdateWork.apply(LabelUpdateWork.java:62)
    at org.neo4j.kernel.impl.transaction.command.LabelUpdateWork.apply(LabelUpdateWork.java:33)
    at org.neo4j.concurrent.WorkSync.doSynchronizedWork(WorkSync.java:121)
    at org.neo4j.concurrent.WorkSync.apply(WorkSync.java:90)
    at org.neo4j.kernel.impl.transaction.command.IndexBatchTransactionApplier.close(IndexBatchTransactionApplier.java:105)
    at org.neo4j.kernel.impl.api.BatchTransactionApplierFacade.close(BatchTransactionApplierFacade.java:70)
    at org.neo4j.kernel.impl.storageengine.impl.recordstorage.RecordStorageEngine.apply(RecordStorageEngine.java:336)
    at org.neo4j.kernel.impl.api.TransactionRepresentationCommitProcess.applyToStore(TransactionRepresentationCommitProcess.java:78)
    ... 25 more
Run Code Online (Sandbox Code Playgroud)

似乎没有异常启动Neo4j所以我假设某些依赖关系没有通过Maven构建解决.

我的pom.xml文件中有以下内容:

<dependency>
    <groupId>com.sparkjava</groupId>
    <artifactId>spark-core</artifactId>
    <version>2.5</version>
</dependency>

<dependency>
    <groupId>org.neo4j</groupId>
    <artifactId>neo4j</artifactId>
    <version>3.0.1</version>
    <type>pom</type>
</dependency>

<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-simple</artifactId>
    <version>1.7.21</version>
</dependency>

<dependency>
    <groupId>org.apache.lucene</groupId>
    <artifactId>lucene-codecs</artifactId>
    <version>5.5.0</version>
</dependency>        

<dependency>
    <groupId>org.neo4j</groupId>
    <artifactId>neo4j-slf4j</artifactId>
    <version>3.0.0-M02</version>
</dependency>

<dependency>
    <groupId>com.google.code.gson</groupId>
    <artifactId>gson</artifactId>
    <version>2.6.2</version>
</dependency>

<dependency>
    <groupId>com.github.jknack</groupId>
    <artifactId>handlebars</artifactId>
    <version>4.0.5</version>
</dependency>

<dependency>
    <groupId>com.opencsv</groupId>
    <artifactId>opencsv</artifactId>
    <version>3.7</version>
</dependency>

<dependency>
    <groupId>commons-codec</groupId>
    <artifactId>commons-codec</artifactId>
    <version>1.10</version>
</dependency>

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>${jackson.version}</version>
</dependency>
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-annotations</artifactId>
    <version>${jackson.version}</version>
</dependency>
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-core</artifactId>
    <version>${jackson.version}</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

我该如何解决这个问题?

更新:

我用一个非常简单的空白项目重新创建了这个问题,如果你想在你的网站上运行它,可以在这里找到源代码:https://github.com/SeanNieuwoudt/neo4j-spi

Ste*_*ter 0

尝试添加以下依赖:

<dependency>
    <groupId>org.apache.lucene</groupId>
    <artifactId>lucene-backward-codecs</artifactId>
    <version>5.5.0</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)