0

我使用 STS,它是一个 Spring Web 项目。

当我手动运行 maven build 时,显示:

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

但是这个项目仍然可以自动构建并部署到 tomcat

所以当我保存文件并使用自动构建时,eclipse是否使用maven来构建我的项目

4

3 回答 3

1

首先。关于依赖关系。

如果您忘记添加所需的依赖项,我将介绍这方面。

为了添加 SLF4J,您必须在 pom.xml 中放置一个且仅一个这些依赖项。这取决于您选择使用什么实现。您在 pom.xml 中添加的每个依赖项都会自动添加到类路径中。如果以下依赖项之一由另一个依赖项提供,则可以省略它。不要忘记,即使依赖项是由另一个依赖项提供的,您也必须只包含一个。请注意,我已经从依赖项中省略了版本。使用最新可用的。

<dependency>
   <groupId>ch.qos.logback</groupId>
   <artifactId>logback-classic</artifactId>
   <version></version>
</dependency>
<dependency>
   <groupId>org.slf4j</groupId>
   <artifactId>slf4j-simple</artifactId>
   <version></version>
   <scope>compile</scope>
</dependency>
<dependency>
   <groupId>org.slf4j</groupId>
   <artifactId>slf4j-log4j12</artifactId>
   <version></version>
   <scope>compile</scope>
</dependency>
<dependency>
   <groupId>org.slf4j</groupId>
   <artifactId>slf4j-jdk14</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-04-28T11:07:51.157 回答
0

您需要确保至少 slf4j 的绑定实现在您的类路径中,即:

<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-log4j12</artifactId>
    <version>1.7.5</version>
 </dependency>
于 2013-04-27T23:32:43.393 回答
0

您需要在 pom.xml 中添加 slf4j 的实现依赖,例如 slf4j-nop。

于 2013-05-08T03:13:17.083 回答