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

标签 java maven intellij-idea neo4j lucene

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

从 IntelliJ 中运行会产生预期的正确结果,但是一旦我将 Artifact 构建到 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

启动 Neo4j 似乎没有异常(exception),所以我假设某些依赖项没有通过 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>

如何解决这个问题?

更新:

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

最佳答案

我接受了你的项目并在我的 eclipse 中执行。我没有问题。以下是启动后的控制台日志:

[Thread-0] 信息 org.eclipse.jetty.util.log - 日志记录已初始化 @473ms [Thread-0] 信息 spark.embeddedserver.jetty.EmbeddedJettyServer - == Spark 已点燃 ... [Thread-0] INFO spark.embeddedserver.jetty.EmbeddedJettyServer ->> 监听 0.0.0.0:8080 [Thread-0] 信息 org.eclipse.jetty.server.Server - jetty-9.3.6.v20151106 [Thread-0] INFO org.eclipse.jetty.server.ServerConnector - Started ServerConnector@5aa07ed2{HTTP/1.1,[http/1.1]}{0.0.0.0:8080} [Thread-0] INFO org.eclipse.jetty.server.Server - 开始 @772ms

访问时 - http://localhost:8080/

我将输出打印为“Hello World”

我遵循的步骤:

1) 从你的 github url 下载你的项目 2) 作为指向 java 8 的 maven 项目导入 3)Maven安装成功 3) 运行主类 4) 在浏览器中看到输出。

我是否遗漏了复制实际问题的任何步骤?

或者与您的专家有关。可能会在运行 maven install 后检查您的 maven 依赖项,以查看是否下载了预期的 jars。

祝你好运。

关于java - 嵌入式 Neo4j SPI 类 (lucene PostingsFormat) 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38191520/

相关文章:

java - Oracle JDBC 瘦客户端 64 位

java - 参数化 JUnit : Loading multiple property files from String array

java - 计算字符串中子字符串的出现次数

Maven部署插件-deployAtEnd不起作用

java - Maven surefire environmentVariables 在一台机器上不起作用

intellij-idea - 为什么 IntelliJ Idea 将 "_war_exploded"添加到部署的上下文路径?

java - 无法 Autowiring 字段 : private org. springframework.security.authentication.AuthenticationManager

java - 为什么我的 URI 不是分层的?

gradle - 如何使Intellij IDEA使用并行和Gradle构建缓存进行构建

android-studio - IntelliJ:在同伴对象和最后一个光标位置之间跳转