在log4j2中找不到类Def,呈现器映射



在我的项目中,我已经从log4j1迁移到了log4j2。它在所有其他插件中的任何地方都很好,但在一个插件中创建了ClassDefNOtFOundError。

旧的log4j jar:log4j-1.2.17.jar新的log4j-jar(此处使用两个jar(:log4j-api-2.13.3.jarlog4j-core-2.13.3.jar

抛出以下错误:

Caused by: java.lang.NoClassDefFoundError: org/apache/log4j/or/RendererMap
at org.apache.log4j.Hierarchy.<init>(Hierarchy.java:97)
at org.apache.log4j.LogManager.<clinit>(LogManager.java:82)
at org.apache.log4j.Logger.getLogger(Logger.java:104)
at org.apache.commons.logging.impl.Log4JLogger.getLogger(Log4JLogger.java:229)
at org.apache.commons.logging.impl.Log4JLogger.<init>(Log4JLogger.java:65)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at org.apache.commons.logging.impl.LogFactoryImpl.newInstance(LogFactoryImpl.java:529)
... 9 more
Caused by: java.lang.ClassNotFoundException: org.apache.log4j.or.RendererMap
at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:355)
at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
... 19 more
DEBUG Main - Waiting for thread AIPw-2-Thread-1 to complete...

请帮忙解决这个问题。提前谢谢。

终于找到了我所面临问题的解决方案。

解决方案:使用以下jar代替log4j-api-2.13.3.jar、log4j-core-2.13.3。jar:
log4j-api-2.14.1.jar,log4j-core-2.14.1.jar仅限版本,从2.13.3升级到2.14.1

详细分析如下:

首先,log42不仅仅是一个jar,每个依赖项都包含在其中。在log4j2:的情况下,我们主要使用以下两个jar进行日志记录

log4j-api-2.13.3.jarlog4j-core-2.13.3.jar

其包括大多数依赖性但不是全部。需要注意的是,这两个不仅仅是log4j 2.13.3版本中的jar,还有更多。所以问题是,RendererMap类不存在于这两个jar中,而是存在于log42版本2.13.3的另一个包中我没有找到完整的罐子包装,所以不知道它在哪个罐子里。

最新更新