无法解决“SLF4J:无法加载类”org.slf4j.impl.StaticLoggerBinder“。

时间:2013-05-02 08:17:46

标签: eclipse maven m2eclipse slf4j

我想使用Eclipse Indigo运行maven项目但是当我运行项目运行As-> Maven安装时,最初消息显示为红色,如下所示:

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.

我研究了它,后来意识到 slf4j 依赖关系也缺失了。我下载 slf4j-1.7.5.zip 并将以下文件解压缩到 C:\ Program Files \ Java \ jdk1.7.0_17 \ lib

slf4j-simple-1.7.5.jar,slf4j-api-1.7.5.jar,log4j-over-slf4j-1.7.5.jar。

还要将依赖项添加到 POM.xml ,现在 pom.xml 如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>org.beginningee6.book</groupId>
    <artifactId>chapter10</artifactId>
    <packaging>war</packaging>
    <version>2.0</version>
    <name>Chapter 10 - JSF</name>

    <parent>
        <groupId>org.beginningee6.book</groupId>
        <artifactId>chapters</artifactId>
        <version>2.0</version>
    </parent>

    <dependencies>
        <dependency>
            <groupId>org.eclipse.persistence</groupId>
            <artifactId>javax.persistence</artifactId>
            <version>${javax.persistence-version}</version>
        </dependency>
        <dependency>
   <groupId>org.slf4j</groupId>
   <artifactId>slf4j-simple</artifactId>
   <version>1.7.5</version>
   <scope>compile</scope>
</dependency>

        <dependency>
   <groupId>org.slf4j</groupId>
   <artifactId>slf4j-api</artifactId>
   <version>1.7.5</version>
   <scope>compile</scope>
</dependency>
<dependency>
   <groupId>org.slf4j</groupId>
   <artifactId>log4j-over-slf4j</artifactId>
   <version>1.7.5</version>
   <scope>compile</scope>
</dependency>

        <dependency>
            <groupId>org.eclipse.persistence</groupId>
            <artifactId>eclipselink</artifactId>
            <version>${eclipselink-version}</version>
        </dependency>
        <dependency>
            <groupId>javax.faces</groupId>
            <artifactId>jsf-api</artifactId>
            <version>${jsf-version}</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.glassfish</groupId>
            <artifactId>javax.ejb</artifactId>
            <version>${glassfish-version}</version>
            <scope>provided</scope>
        </dependency>

        <dependency>
            <groupId>org.apache.derby</groupId>
            <artifactId>derbyclient</artifactId>
            <version>10.6.2.1</version>
        </dependency>

        <dependency>
            <groupId>org.apache.derby</groupId>
            <artifactId>derby</artifactId>
            <version>10.6.2.1</version>
            <!--<scope>test</scope>-->
        </dependency>
        <dependency>
            <groupId>org.glassfish.extras</groupId>
            <artifactId>glassfish-embedded-all</artifactId>
            <version>3.1.1</version>
            <scope>test</scope>
        </dependency>
    </dependencies>
</project>

最终,我更新项目并再次运行它,但仍然出现相同的消息。

任何帮助都将受到高度赞赏。

2 个答案:

答案 0 :(得分:3)

首先,只要slf4j-api与log4j-over-slf4j依赖项捆绑在一起,就应该删除slf4j-api的依赖关系。检查Dependency Hierarchy选项卡(在pom.xml中),您将在log4j-over-slf4j下看到slf4j-api。

此外,无需添加任何这些文件(slf4j-simple-1.7.5.jar,slf4j-api-1.7.5.jar和log4j-over-slf4j-1.7.5.jar) lib文件夹,只要您在pom.xml中提供它们即可。 Maven会自动添加pom.xml中列出的每个依赖项以及应用程序在系统类路径中所需的所有必需jar。

<dependency>
       <groupId>org.slf4j</groupId>
       <artifactId>slf4j-log4j12</artifactId>
       <version></version>
       <scope>compile</scope>
</dependency>

其次,只要您提供依赖项并且仍然获得SLF4J:无法加载类“org.slf4j.impl.StaticLoggerBinder”,这意味着您将面临m2e错误。

当使用捆绑的maven版本(m2e)时,Eclipse Juno和Indigo不会抑制消息 SLF4J:无法加载类“org.slf4j.impl.StaticLoggerBinder”。此行为存在于m2e版本1.1.0.20120530-0009及之后。

虽然这表示为错误,但您的日志会正常保存。在修复此错误之前,突出显示的错误仍然存​​在。有关详情,请参阅m2e support site

当前可用的解决方案是使用外部maven版本而不是捆绑版本的Eclipse。您可以在下面的问题中找到有关此错误的此解决方案和更多详细信息,我相信这些错误描述了您面临的相同问题。

SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder". error

答案 1 :(得分:0)

此警告消息仅影响Maven构建过程!它不会影响您的应用程序! 因此,如果您想忽略此警告,您必须强制使用Maven(可能是集成到Eclipse中的那个)强制使用SLF4J。