log4j-over-slf4j和slf4j-log4j12是跟java日志系统相关的两个jar包,当它们同时出现在classpath下时,就可能会引起堆栈溢出异常。
异常信息大致如下(摘自slf4j官网文档 Detected both log4j-over-slf4j.jar AND slf4j-log4j12.jar on the class path, preempting StackOverflowError ):
Exception in thread "main" java.lang.StackOverflowError
at java.util.Hashtable.containsKey(Hashtable.java:306)
at org.apache.log4j.Log4jLoggerFactory.getLogger(Log4jLoggerFactory.java:36)
at org.apache.log4j.LogManager.getLogger(LogManager.java:39)
at org.slf4j.impl.Log4jLoggerFactory.getLogger(Log4jLoggerFactory.java:73)
at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:249)
at org.apache.log4j.Category.<init>(Category.java:53)
at org.apache.log4j.Logger..<init>(Logger.java:35)
at org.apache.log4j.Log4jLoggerFactory.getLogger(Log4jLoggerFactory.java:39)
at org.apache.log4j.LogManager.getLogger(LogManager.java:39)
at org.slf4j.impl.Log4jLoggerFactory.getLogger(Log4jLoggerFactory.java:73)
at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:249)
at org.apache.log4j.Category..<init>(Category.java:53)
at org.apache.log4j.Logger..<init>(Logger.java:35)
at org.apache.log4j.Log4jLoggerFactory.getLogger(Log4jLoggerFactory.java:39)
at org.apache.log4j.LogManager.getLogger(LogManager.java:39)
subsequent lines omitted...
解决办法:
两个jar包会循环引用导致内存溢出。解决的办法就是将两个jar包其中一个的依赖移除掉
分享到:
相关推荐
该压缩包中包含以下内容: 1、jcl-over-slf4j-1.7.21.jar 2、jcl-over-slf4j-1.7.21-sources.jar 3、jul-to-slf4j-1.7.21.jar 4、jul-to-slf4j-1.7.21-sources.jar 5、log4j-over-slf4j-1.7.21.jar 6、log4j-over-...
该压缩包中包含以下内容: 1、jcl-over-slf4j-1.7.21.jar 2、jcl-over-slf4j-1.7.21-sources.jar 3、jul-to-slf4j-1.7.21.jar 4、jul-to-slf4j-1.7.21-sources.jar 5、log4j-over-slf4j-1.7.21.jar 6、log4j-over-...
20、slf4j-log4j12-1.7.21-sources.jar 21、slf4j-migrator-1.7.21.jar 22、slf4j-nop-1.7.21.jar 23、slf4j-nop-1.7.21-sources.jar 24、slf4j-simple-1.7.21.jar 25、slf4j-simple-1.7.21-sources.jar
log4j-over-slf4j和slf4j-log4j12是两个与Java日志系统相关的jar包,当它们同时出现在classpath下时,就可能会引起堆栈溢出异常。这个异常的出现是由于log4j-over-slf4j和slf4j-log4j12之间的桥接和绑定机制引起的。...
3. **slf4j-log4j12-1.8.0-beta2.jar**:这个文件是SLF4J到Log4j的具体绑定实现。当你引入这个JAR时,SLF4J API会将日志记录委托给Log4j实现。这意味着你的应用程序最终会使用Log4j进行日志输出,而日志配置(如log4...
slf4j-api-1.7.30.jar(slf4j门面)、slf4j-simple-1.7.30.jar(slf4j的简单实现)、slf4j-jdk14-1.7.30.jar(slf4j与JUL日志框架绑定)、slf4j-log4j12-1.7.30.jar(slf4j与Log4j日志框架的绑定)、log4j-over-slf4...
java 界里有许多实现...看到上面的流程图可能会发现一个有趣的问题,假如在 CLASS_PATH 里同时放置 log4j-over-slf4j.jar 和 slf4j-log4j12-version.jar 会发生什么情况呢?没错,日志会被踢来踢去,最终进入死循环。
- **显式绑定**: 直接在项目中包含特定日志实现的JAR文件,如`slf4j-log4j12.jar`将SLF4J与Log4j绑定。 - **隐式绑定**: 如果项目中存在多个日志实现的JAR,SLF4J会根据默认规则选择一个进行绑定,这可能会导致意外...
关于解决 java.lang.NoClassDefFoundError: org/slf4j/impl/StaticLoggerBinder 的解决方法
3. **日志实现选择**:在SLF4J 1.7.12压缩包中,可能包含了多种日志实现的绑定器,如logback-classic.jar(Logback绑定器)、slf4j-log4j12.jar(Log4j绑定器)等。根据项目需求,开发者可以选择合适的一个,并将其...
在描述中提到的"lombok.extern.slf4j.Slf4j注解错误",这可能是指在使用Lombok和SLF4J时遇到的一些问题,例如缺少对应的依赖、配置错误或者版本不兼容。为了解决这些问题,通常需要检查以下几点: 1. 确保项目中已...
3. **slf4j-log4j12.jar**:这个JAR桥接了SLF4J和Log4j,如果你的系统中同时有Log4j的配置,那么SLF4J会通过这个桥接器使用Log4j进行日志记录。 4. **logback-classic.jar** 和 **logback-core.jar**:如果项目中...
5. **日志桥接**: 如果项目中存在多种日志库(例如既有Log4j又有java.util.logging),SLF4J还提供了桥接器(如`log4j-over-slf4j.jar`和`jul-to-slf4j.jar`)来将这些日志库的调用重定向到SLF4J,以统一管理日志。...
删除项目中存在的Log4j1.x所必须的log4j和slf4j-log4j12等依赖可以使用以下命令: mvn dependency:tree > tree.log cat tree.log | grep log4j 添加Slf4j和Log4j2的依赖可以使用以下配置: <groupId>org.slf4j ...
例如,`slf4j-log4j12.jar`将SLF4J API绑定到Log4j实现,`slf4j-jdk14.jar`则将其绑定到JUL。在运行时,必须有一个绑定存在,否则会使用默认的NoOpLogger,不会记录任何日志。 3. **桥接**:由于历史原因,一些库...
使用SLF4J的关键在于,通过在项目中引入`slf4j-api.jar`,然后根据实际需求选择合适的日志实现(如logback或log4j),并通过相应的适配器(如`slf4j-log4j12.jar`)桥接SLF4J接口与具体日志框架。这样,如果将来需要...
3. **slf4j-log4j12-1.5.6.jar**:一个适配器,允许SLF4J与log4j日志框架一起使用。 4. **logback-classic-*.jar**:如果包括,这将是SLF4J的一个推荐实现,由其创始人Ceki Gülcü所创建,提供了高性能且灵活的日志...
- **其他绑定**:SLF4J还支持其他日志系统,如log4j-over-slf4j.jar(Log4j到SLF4J的桥接)、jcl-over-slf4j.jar(Jakarta Commons Logging到SLF4J的桥接)等。 3. **SLF4J的优势** - **灵活性**:SLF4J允许在不...
6. **slf4j-log4j12.jar**: SLF4J的适配器,使得SLF4J调用可以转换为Log4j的调用。 7. **jcl-over-slf4j.jar** (可选): Jakarta Commons Logging (JCL) 的桥接器,使得使用JCL的日志调用可以通过SLF4J来路由到Log4j...
1. 移除Log4j相关依赖:从项目的`pom.xml`或构建配置中移除`log4j`和`slf4j-log4j12`的依赖。这两个依赖分别是Log4j的核心库和SLF4J到Log4j的适配器。 ```xml <groupId>log4j <artifactId>log4j <groupId>org...