"Provider org.apache.logging.slf4j.SLF4JProvider not found"错误,在 Spring 启动 2.0.2 应用程序中



我的 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 时,它不会被拉入胖罐中。

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

最新更新