微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

未找到类定义,log4j2 中的渲染器映射

如何解决未找到类定义,log4j2 中的渲染器映射

我的项目已从 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.jar log4j-core-2.13.3.jar

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。