我不但有代码洁癖,而且还有日志洁癖。html
看着这样的代码就会感到不舒服:web
if(a==0 )
必须把它改为:spring
if (a == 0)
才能继续思考。apache
当我在Tomcat
输出的日志里看到这样的警告:app
SLF4J: Class path contains multiple SLF4J bindings
不由陷入了深深的思考。webapp
我讨厌一切警告。this
Treat warnings as errors or delete them, but never spend human labor looking through warning lists routinely.
将警告当错误同样对待,或者完全删除相关代码,可是绝对不要浪费时间天天对它视若无睹。
因而,像大家同样开始在网上搜索。.net
有人说这样解决。日志
有人说那样解决。code
还有人说Solve it this way.
可是我告诉大家,没有一个方法能解决。
个人pom.xml
文件是这么写的:
<dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>1.7.7</version> </dependency> <dependency> <groupId>org.apache.activemq</groupId> <artifactId>activemq-all</artifactId> <version>5.11.1</version> </dependency>
这是由于activemq-all.jar
包是一个ueber
包,它里面已经包含了一个slf4j-log4j12.jar
,你妄图用这样的方法去解决这个警告:
<dependency> <groupId>org.apache.activemq</groupId> <artifactId>activemq-all</artifactId> <version>5.11.1</version> <exclusions> <exclusion> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> </exclusion> </exclusions> </dependency>
是注定不可能成功的。
在这里,最正确地解决这个问题的方法是:
<dependency> <groupId>org.apache.activemq</groupId> <artifactId>activemq-all</artifactId> <version>5.11.1</version> </dependency>
把activemq-all
改为activemq-spring
就行了。
虽然如此,我又遇到了问题:
SLF4J: Class path contains multiple SLF4J bindings. SLF4J: Found binding in [jar:file:/C:/Users/admin/.m2/repository/org/slf4j/slf4j-log4j12/1.7.7/slf4j-log4j12-1.7.7.jar!/org/slf4j/impl/StaticLoggerBinder.class] SLF4J: Found binding in [jar:file:/C:/Users/admin/.m2/repository/org/slf4j/slf4j-log4j12/1.6.1/slf4j-log4j12-1.6.1.jar!/org/slf4j/impl/StaticLoggerBinder.class] SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
此次pom.xml
是没有任何问题的,但为何还有这个错误呢?
最后发现竟然是有人在/src/main/webapp/WEB-INF
下放了一个lib
文件夹,在这个文件夹里放了一个老版本的slf4j-log4j12-1.6.1.jar
进去。
果断删除全部lib
文件夹下的文件。
从新提交代码,编译,部署。
终于,咱们完全解决了全部SLF4J: Class path contains multiple SLF4J bindings.
问题。
日志一片清爽。
感受世界从新恢复了秩序。