如何修复“SLF4J:无法加载类“org.slf4j.impl.StaticLoggerBinder”。”

问题描述 投票:0回答:4

我的应用程序有以下错误消息:

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.

在我尝试运行应用程序的任何脚本后,会出现此消息。我发现,正如它所说,它不会创建日志,所以当出现故障时我会空手而归。

我在 Amazon Linux 2 中运行它,它最接近 CentOS 和 Redhat。

我找到了以下资源: 此问题在这里解决:http://www.slf4j.org/codes.html#StaticLoggerBinder 我可以从这里获取我需要的jar:https://repo1.maven.org/maven2/org/slf4j/slf4j-simple/1.6.2/slf4j-simple-1.6.2.jar 将这个 jar 放入我的应用程序的 /lib 后,没有任何变化。

其他文章描述了将此文件添加到类路径中。在 Linux 中,我得到这个:

# java -classpath /opt/opendj/lib/slf4j-simple-1.6.2.jar org.slf4j.impl.StaticLoggerBinder
Error: Could not find or load main class org.slf4j.impl.StaticLoggerBinder
# java -jar /opt/opendj/lib/slf4j-simple-1.6.2.jar org.slf4j.impl.StaticLoggerBinder
no main manifest attribute, in /opt/opendj/lib/slf4j-simple-1.6.2.jar

我是否想将它添加到类路径中?

如果需要,您可以通过执行以下操作来重现此问题: 重现该行为的步骤: 将新版本的 OpenDJ 安装到 CentOS 或 Amazon Linux2 EC2 实例上。安装java 1.8.0 特别是 java-1.8.0-openjdk 以任何配置安装服务器,然后运行状态脚本。

预期行为 应生成日志并且不会显示任何警告消息。

java libraries
4个回答
22
投票

首先,你应该看看这里:https://www.slf4j.org/codes.html

此外,您可以尝试将这些 SLF4J maven 依赖项添加到您的 pom 中,并让我知道这是否有效:

<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-api</artifactId>
    <version>2.20.0</version>
</dependency>
<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-core</artifactId>
    <version>2.20.0</version>
</dependency>
<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-slf4j-impl</artifactId>
    <version>2.20.0</version>
</dependency>

注意:考虑到maven依赖项版本正在更新,那么也许您更喜欢使用最新版本的依赖项(例如log4j-api是3.0.0-alpha1)

另一方面,这篇文章也可以帮助您: https://mkyong.com/java/log4j2-failed-to-load-class-org-slf4j-impl-staticloggerbinder/


2
投票

就我而言,我在使用 MavenCli lib 时收到此错误。我错过了在 pom.xml 中添加 maven-compat lib。以下是我使用过的完整示例代码。

示例代码:

MavenCli mavenCli=new MavenCli();
mavenCli.doMain(new String[]{"clean","install"}, path_of_project_dir, System.out, System.out);

需要依赖:

<dependency>
            <groupId>org.apache.maven</groupId>
            <artifactId>maven-embedder</artifactId>
            <version>3.6.3</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-simple</artifactId>
            <version>1.7.30</version>
        </dependency>
        <dependency>
            <groupId>org.apache.maven</groupId>
            <artifactId>maven-compat</artifactId>
            <version>3.6.3</version>
        </dependency>

1
投票

我希望它会有所帮助:)

<!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-api -->
<dependency>
  <groupId>org.slf4j</groupId>
  <artifactId>slf4j-api</artifactId>
  <version>2.0.6</version>
</dependency>


<!-- https://mvnrepository.com/artifact/ch.qos.logback/logback-classic -->
<dependency>
  <groupId>ch.qos.logback</groupId>
  <artifactId>logback-classic</artifactId>
  <version>1.4.5</version>
</dependency>

0
投票

就我而言,我在 spring-boot 应用程序中使用 logback 并遇到了这个问题。它与来自第三方库的 slf4j 和 logback 版本不兼容有关。我排除了所有这些并使用了这些:

    <!-- logging dependencies-->
    <dependency>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-classic</artifactId>
        <version>${logback.version}</version>
    </dependency>
    <dependency>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-core</artifactId>
        <version>${logback.version}</version>
    </dependency>
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>${slf4j.version}</version>
    </dependency>

${logback.version}
${slf4j.version}
来自
spring-boot-dependencies-2.X.X.pom
文件。

© www.soinside.com 2019 - 2024. All rights reserved.