Я столкнулся с тем же исключением, когда пытался создать uber-jar для проекта, который включал Neo4j в качестве встроенной базы данных. В этот момент я также использовал плагин maven-assembly-.
Решение, которое я нашел, состояло в том, чтобы вместо него использовать maven-shade-plugin и включить ServicesResourceTransformer * 1006. * в конфигурации плагина.
Запись maven-shade-plugin в моем pom. xml выглядит следующим образом:
<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>
Я создаю файл jar с mvn clean package
команда. Выполнение jar через java -jar <name>.jar
дало мне тот же результат, что и запуск приложения из моей IDE, и не выдало исключение выше.
Некоторый дополнительный контекст : вывод maven- shade-plugin ясно указывает, что несколько зависимостей Neo4j намереваются включать перекрывающиеся сервисы в каталог META-INF/services
фляги, например,
[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 объединит ресурсы, добавив их содержимое.