【发布时间】:2021-06-07 08:25:05
【问题描述】:
我应该将我的项目 log4j 升级到 log4j2。所以我删除了 log4j 依赖项并添加了 log4j2。一些项目运行良好,但一个项目出现如下错误:
]] Root cause of ServletException.
java.lang.NoClassDefFoundError: org/apache/logging/log4j/LogManager
at jsp_servlet.__view._jspService(__view.java:86)
at weblogic.servlet.jsp.JspBase.service(JspBase.java:35)
at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:286)
at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:260)
Truncated. see log file for complete stacktrace
Caused By: java.lang.ClassNotFoundException: org.apache.logging.log4j.LogManager
at weblogic.utils.classloaders.GenericClassLoader.findLocalClass(GenericClassLoader.java:1029)
at weblogic.utils.classloaders.GenericClassLoader.findClass(GenericClassLoader.java:990)
at weblogic.utils.classloaders.ChangeAwareClassLoader.findClass(ChangeAwareClassLoader.java:104)
at weblogic.utils.classloaders.GenericClassLoader.doFindClass(GenericClassLoader.java:611)
at weblogic.utils.classloaders.GenericClassLoader.loadClass(GenericClassLoader.java:543)
Truncated. see log file for complete stacktrace
我使用 mvn dependency:tree 命令并试图找到依赖项和 我试图排除每个可能相关的子库,但仍然得到相同的错误。
代码:
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
private static final Logger log = LogManager.getLogger(View.class);
依赖:
Maven: commons-io:commons-io:2.8.0
Maven: javax.servlet:servlet-api:2.5
Maven: oracle:ojdbc6:11.2.0.3
Maven: org.apache.logging.log4j:log4j-api:2.14.0
Maven: org.apache.logging.log4j:log4j-core:2.14.0
Maven: org.apache.pdfbox:fontbox:2.0.23
Maven: org.apache.pdfbox:pdfbox:2.0.23
Maven: org.springframework:spring-beans:5.2.12.RELEASE
Maven: org.springframework:spring-core:5.2.12.RELEASE
Maven: org.springframework:spring-web:5.2.12.RELEASE
log4j2.properties:
status = error
name = PropertiesConfig
#Make sure to change log file path as per your need
property.filename = path/to/filename
filters = threshold
filter.threshold.type = ThresholdFilter
filter.threshold.level = debug
appenders = console,rolling
appender.console.type = Console
appender.console.name = STDOUT
appender.console.layout.type = PatternLayout
appender.console.layout.pattern = %5p - %d{yyyy-MM-dd HH:mm:ss.SSS} - %F:%L - %m%n
appender.rolling.type = RollingFile
appender.rolling.name = RollingFile
appender.rolling.fileName = ${filename}
appender.rolling.filePattern = '-'yyyy-MM-dd'.log'
appender.rolling.layout.type = PatternLayout
appender.rolling.layout.pattern = %5p - %d{yyyy-MM-dd HH:mm:ss.SSS} - %F:%L - %m%n
appender.rolling.policies.type = Policies
appender.rolling.policies.time.type = TimeBasedTriggeringPolicy
appender.rolling.policies.time.interval = 1
appender.rolling.policies.time.modulate = true
appender.rolling.policies.size.type = SizeBasedTriggeringPolicy
appender.rolling.policies.size.size=10MB
appender.rolling.strategy.type = DefaultRolloverStrategy
appender.rolling.strategy.max = 20
loggers = rolling
#Make sure to change the package structure as per your application
logger.rolling.name = com.thy.dvs
logger.rolling.level = debug
logger.rolling.additivity = false
logger.rolling.appenderRef.rolling.ref = RollingFile
rootLogger.level = debug
rootLogger.appenderRefs = stdout
rootLogger.appenderRef.stdout.ref = STDOUT
【问题讨论】:
-
org.apache.logging.log4j:log4j-api:2.14.0应该包含org.apache.logging.log4j.LogManager所以可能与其说是依赖冲突,不如说是打包错误? -
很抱歉没有添加我正在使用的服务器。我使用 weblogic 服务器。@JeroenSteenbeeke
-
啊,大概是这个问题吧? stackoverflow.com/a/35774403/8819761
标签: java log4j log4j2 classnotfoundexception