gpt4 book ai didi

java - Neo4j 嵌入抛出 IllegalArgumentException : Config has no association with setting: 'unsupported.dbms.lucene.ephemeral'

转载 作者:行者123 更新时间:2023-12-01 14:32:51 26 4
gpt4 key购买 nike

我目前正在开发一个带有嵌入式 neo4j 数据库的 java 应用程序(使用 maven)。我关注了 official guide还看了examples on github .

我的代码现在看起来像这样:

import org.neo4j.dbms.api.DatabaseManagementService;
import org.neo4j.dbms.api.DatabaseManagementServiceBuilder;
import org.neo4j.graphdb.*;

import static org.neo4j.configuration.GraphDatabaseSettings.DEFAULT_DATABASE_NAME;

public class GraphDatabase {

private DatabaseManagementService managementService;
private GraphDatabaseService databaseService;

public void start(String dir) {
managementService = new DatabaseManagementServiceBuilder(new File(dir)).build();

databaseService = managementService.database(DEFAULT_DATABASE_NAME);
}
...
}

在 pom.xml 我包括:
<dependency>
<groupId>org.neo4j</groupId>
<artifactId>neo4j</artifactId>
<version>4.0.0</version>
</dependency>
...
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>3.2.0</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<mainClass>{myPackageHere}.App</mainClass>
</manifest>
</archive>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
</plugin>

在 Intellij IDE 中运行时没有问题,但是当我使用 mvn package 编译时并使用 java -jar <name>.jar 执行我收到以下异常:
java.lang.IllegalArgumentException: Config has no association with setting: 'unsupported.dbms.lucene.ephemeral'
at org.neo4j.configuration.Config.getObserver(Config.java:635)
at org.neo4j.configuration.Config.set(Config.java:653)
at org.neo4j.dbms.api.DatabaseManagementServiceBuilder.newDatabaseManagementService(DatabaseManagementServiceBuilder.java:83)
at org.neo4j.dbms.api.DatabaseManagementServiceBuilder.build(DatabaseManagementServiceBuilder.java:78)

我在 linux 和 windows 上都试过这个,但有相同的异常(exception)。

任何人都知道我的问题可能是什么?

更新:

我删除了 maven-assembly-plugin。如果我像这样编译并运行项目,它会起作用:
mvn compile
mvn exec:java -Dexec.mainClass={myPackageHere}.App

但我还是更喜欢 jar ...

最佳答案

当我尝试为包含 Neo4j 作为嵌入式数据库的项目创建 uber-jar 时,我遇到了同样的异常。那时我也使用了 maven-assembly-plugin。

我找到的解决方案是使用 maven-shade-plugin而是包含一个 ServicesResourceTransformer在插件的配置中。

我的 pom.xml 中 maven-shade-plugin 的条目如下所示:

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>3.2.2</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<transformers>
<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<manifestEntries>
<mainClass>{myPackageHere}.App</mainClass>
</manifestEntries>
</transformer>
<transformer implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer"/>
</transformers>
<filters>
...
</filters>
</configuration>
</execution>
</executions>
</plugin>

我使用 mvn clean package 构建 jar 文件命令。通过 java -jar <name>.jar 执行 jar给了我与从我的 IDE 运行应用程序完全相同的结果,并且没有抛出上面的异常。

一些额外的上下文 :maven-shade-plugin 的输出清楚地表明多个 Neo4j 依赖项打算在 META-INF/services 中包含重叠的服务。 jar 的目录,例如
[WARNING] neo4j-configuration-4.0.2.jar, neo4j-dbms-4.0.2.jar, neo4j-fulltext-index-4.0.2.jar, neo4j-kernel-4.0.2.jar, neo4j-ssl-4.0.2.jar define 1 overlapping resources: 
[WARNING] - META-INF/services/org.neo4j.configuration.SettingsDeclaration

我的理解是 maven-shade-plugin 只会保留它在执行期间看到的相应资源的最后一个实例。 ServicesResourceTransformer 将通过附加它们的内容来聚合资源。

关于java - Neo4j 嵌入抛出 IllegalArgumentException : Config has no association with setting: 'unsupported.dbms.lucene.ephemeral' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60104512/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com