问题描述
我在 Windows 上使用 Intellij 2021.1.2 Community Edition 和 Java 16 和 Maven 3.6.3(与 Intellj 捆绑)。
当我尝试运行我的 jar 时,这里是完整的错误:
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (nop) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
我发现了很多关于此错误的问题,但没有一个与我的具体情况相符,所以如果这是重复的,请指出正确的解决方案。
我的项目昨天运行良好,自昨天以来我没有对任何依赖项进行任何更改,所以我对可能是什么问题感到有些困惑。也就是说,我正在尝试运行一个使用依赖 Jedis 的 jar。我在我的 pom 中将它列为:
<!-- https://mvnrepository.com/artifact/redis.clients/jedis -->
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>3.6.1</version>
</dependency>
而且似乎 slf4j 是 Jedis 的一个依赖项,正如我在 Maven 窗口中看到的:
在 Intellij 中,如果我转到 Project Structure -> Modules,slf4j 将设置为编译。如果我通过库文件路径 (C:\Users\MyUsername.m2\repository\org\slf4j\slf4j-api\1.7.30\slf4j-api-1.7.30-sources.jar) 转到 slf4j 源 jar Project Structure -> Libraries 打开jar,可以看到类文件“org.slf4j.impl.StaticLoggerBinder”确实存在。依赖也只用于 Jedis,所以似乎没有依赖冲突或任何东西。
在 maven 中,我使用“构建工件”功能构建了 jar,将库编译成单个 jar。将它们编译为单独的 jar 会产生相同的错误。
什么给?如果您对此问题有任何见解,我们将不胜感激。
解决方法
我遇到了这个问题。为了解决这个问题,我将 slf4j 依赖的范围从 Compile 更改为“Test”,然后转到 IntelliJ 中的 File -> Project Structure -> Modules -> Dependencies 选项卡。它解决了问题