Maven SLF4J绑定错误
我是maven的新手,最近两天我尝试将maven集成到一个小型web项目中。 (我使用EclipseJuno作为IDE)。 首先,我使用“mvn archetype webapp”命令生成了一个新的项目(结构),并将项目中的源代码复制到这个结构中。 然后,我将所有依赖项添加到pom.xml中,这样我就可以编译并使用tomcat7插件启动项目。 到目前为止,除了每个maven命令开始时的SLF4J错误消息外,一切正常:Maven SLF4J绑定错误,maven,m2eclipse,slf4j,Maven,M2eclipse,Slf4j,我是maven的新手,最近两天我尝试将maven集成到一个小型web项目中。 (我使用EclipseJuno作为IDE)。 首先,我使用“mvn archetype webapp”命令生成了一个新的项目(结构),并将项目中的源代码复制到这个结构中。 然后,我将所有依赖项添加到pom.xml中,这样我就可以编译并使用tomcat7插件启动项目。 到目前为止,除了每个maven命令开始时的SLF4J错误消息外,一切正常: SLF4J:未能加载类“org.SLF4J.impl.StaticLogger
SLF4J:未能加载类“org.SLF4J.impl.StaticLoggerBinder”。
SLF4J:默认为无操作(NOP)记录器实现SLF4J:
看见http://www.slf4j.org/codes.html#StaticLoggerBinder 详情请参阅。
我的pom.xml依赖项如下所示:
3.1.1.1发布
回写
回归经典
1.0.6
org.slf4j
slf4j api
1.6.6
org.slf4j
jcl-over-slf4j
1.6.6
运行时
朱尼特
朱尼特
3.8.1
测试
org.springframework
弹簧芯
${spring.version}
公用记录
公用记录
org.springframework
spring上下文
${spring.version}
公用记录
公用记录
org.springframework
SpringWebMVC
${spring.version}
公用记录
公用记录
爪哇
javaeewebapi
6
假如
org.apache.tiles
砖芯
2.2.2
org.apache.tiles
瓷砖api
2.2.2
org.apache.tiles
平铺jsp
2.2.2
jstl
jstl
1.2
有人能帮我解决这个问题吗?尝试添加logback core的依赖项
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-core</artifactId>
<version>1.0.6</version>
<scope>runtime</scope>
</dependency>
回写
回溯堆芯
1.0.6
运行时
依赖项声明看起来不错。Logback和slf4j将在您的web应用程序中提供。然而,我怀疑slf4j-api.jar以某种方式包含在Tomcat中(而不是logback)
顺便说一句,
mvn dependency:tree
命令是您的朋友。上面说什么 我也遇到了同样的问题:我将POM复制到一个空项目中,并将其缩减到几乎为零(见下文)——但我仍然看到了错误。我可以通过向POM添加SLF4J绑定(logback等)来验证它是否消失了——消息显然来自Maven本身,而不是正在编译和测试的项目软件。(我现在从一个完全空的项目中获得它。)
我能弄清楚的最好的事情是,我认为它与Eclipse有关:当我从命令行手动运行Maven时,错误不会出现——只有在Eclipse下调用时才会出现。(我正在MacOSX上使用EclipseHeliosRelease2,仅供参考,因此我们知道问题并不局限于您的版本,Juno。)
信息不太丰富,但确实如此。此错误来自运行maven的eclipse,而不是您的项目,因此它不会影响您的构建过程或生成的文件 我假设这是一个与maven相关的问题,使用的不是slf4j或其他日志工具,而是eclipse或maven插件试图解决这个问题
消除此错误的最简单方法是使用外部maven,而不是eclipse中的运行时。您可以在Preferences->maven->Installations中对此进行配置。EclipseJuno和Indigo在使用捆绑maven版本(m2e)时,不会抑制消息SLF4J:Failed to load class“org.SLF4J.impl.StaticLoggerBinder”。此行为在m2e版本1.1.0.20120530-0009及更高版本中出现 尽管如此,这表示为一个错误,您的日志将正常保存。在修复此错误之前,突出显示的错误仍然存在。更多关于这方面的信息,请参阅 当前可用的解决方案是使用外部maven版本,而不是Eclipse的捆绑版本。您可以在下面的问题中找到有关此解决方案和有关此错误的更多详细信息,这与您面临的问题完全相同 “使用tomcat7插件” tomcat7插件具有SLF4J依赖性。在我将依赖项直接分配给tomcat7插件之前,我也遇到了同样的问题
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<dependencies>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<version>1.7.5</version>
</dependency>
</dependencies>
<configuration>
<!-- ...snip... -->
</configuration>
</plugin>
</plugins>
</pluginManagement>
org.apache.tomcat.maven
tomcat7 maven插件
2.2
org.slf4j
slf4j简单
1.7.5
您可以将其添加到pom属性中
<org.slf4j-version>1.7.5</org.slf4j-version>
1.7.5
声明logback classic就足以借助Maven依赖传递性引入logback核心和slf4j api。无需将logback核心声明为依赖项。在我的答案中添加了maven依赖项,如上所述。(是的,几个月后仍在发生…)可能重复
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<dependencies>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<version>1.7.5</version>
</dependency>
</dependencies>
<configuration>
<!-- ...snip... -->
</configuration>
</plugin>
</plugins>
</pluginManagement>
<org.slf4j-version>1.7.5</org.slf4j-version>