我的 Spring 启动应用程序在尝试运行 jar 时遇到此错误,但在 Intellij 中运行时则没有:
Caused by: java.util.ServiceConfigurationError: org.apache.logging.log4j.spi.Provider: Provider org.apache.logging.slf4j.SLF4JProvider not found
然而,当运行mvn dependency:tree
时,我可以看到 slf4j jars:
+- org.springframework.boot:spring-boot-starter-web:jar:2.0.2.RELEASE:compile
| +- org.springframework.boot:spring-boot-starter:jar:2.0.2.RELEASE:compile
| | +- org.springframework.boot:spring-boot:jar:2.0.2.RELEASE:compile
| | +- org.springframework.boot:spring-boot-autoconfigure:jar:2.0.2.RELEASE:compile
| | +- org.springframework.boot:spring-boot-starter-logging:jar:2.0.2.RELEASE:compile
| | | +- org.apache.logging.log4j:log4j-to-slf4j:jar:2.10.0:compile
| | | - org.slf4j:jul-to-slf4j:jar:1.7.25:compile
和
+- org.testcontainers:testcontainers:jar:1.7.1:test
| +- org.slf4j:slf4j-api:jar:1.7.25:compile
| +- org.slf4j:slf4j-ext:jar:1.7.25:test
我在这里错过了什么?
我的猜测是,该类是由您的一个测试依赖项拾取的,因此当您在 IntelliJ 中运行时,它位于类路径中,但是当您构建一个可运行的 jar 时,它不会被拉入胖罐中。
看看它在哪个罐子里,并检查它不在测试范围内。