在春季启动2.0.2应用中出现“找不到提供者org.apache.logging.slf4j.SLF4JProvider”错误

时间:2018-06-21 08:57:12

标签: java maven spring-boot

我的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 jar:

 +- 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

我在这里想念什么?

1 个答案:

答案 0 :(得分:0)

我的猜测是,该类是由您的一个测试依赖项拾取的,因此当您在IntelliJ中运行时,它位于类路径中,但是当您构建可运行的jar时,它不会被拉到胖的jar中。 >

看看它在什么罐子里,并检查它不在测试范围内。