0

我想使用 Eclipse Indigo 运行 maven 项目,但是当我运行项目Run As->Maven Install时,最初以红色显示的消息如下:

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>

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

任何帮助将不胜感激。

4

2 回答 2

3

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

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

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

其次,只要您提供了依赖项,您仍然会得到 SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder",这意味着您面临 m2e 错误。

Eclipse Juno 和 Indigo 在使用捆绑的 maven 版本(m2e)时,不会抑制消息SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder"。此行为从 m2e 版本 1.1.0.20120530-0009 及更高版本开始存在。

虽然,这被指示为错误,您的日志将正常保存。在修复此错误之前,突出显示的错误仍将存在。在m2e 支持站点中了解更多信息。

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

SLF4J:无法加载类“org.slf4j.impl.StaticLoggerBinder”。错误

于 2013-05-06T18:26:02.557 回答
0

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

于 2013-05-05T22:34:18.427 回答