问题
最近在开发中,项目使用的日志框架是log4j,在引入第三方库tess4j之后,由于tess4j中也使用了日志,报错:
原因是:log4j-over-slf4j和slf4j-log4j12是跟Java日志系统相关的两个jar包,当它们同时出现在classpath下时,就可能会引起堆栈溢出异常。
解决
此警告信息表示工程中有logback和log4j两种日志框架,最后slf4j选择了logback。那么该问题如何解决呢,可以看出日志中也打印出来了问题说明的网址,见http://www.slf4j.org/codes.html#multiple_bindings:
在maven中加入此段依赖即可解决问题。
总结
如果不想使用某个日志框架,就在依赖中排除该框架的依赖。比如示例中,工程依赖了cassandra-all,而cassandra-all内部使用了log4j作为日志框架,若我们工程不想使用log4j,就需要排除log4j和slf4j-log4j12两个依赖。