1.在对日志依赖
log4j
升级为2.15.0版本后启动项目出现了如下错误:
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/logging/log4j/util/ReflectionUtil
at org.apache.logging.slf4j.Log4jLoggerFactory.getContext(Log4jLoggerFactory.java:42)
at org.apache.logging.log4j.spi.AbstractLoggerAdapter.getLogger(AbstractLoggerAdapter.java:48)
at org.apache.logging.slf4j.Log4jLoggerFactory.getLogger(Log4jLoggerFactory.java:29)
at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:277)
at org.apache.commons.logging.LogAdapter$Slf4jAdapter.createLocationAwareLog(LogAdapter.java:130)
at org.apache.commons.logging.LogAdapter.createLog(LogAdapter.java:91)
at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:67)
at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:59)
at org.springframework.boot.SpringApplication.<clinit>(SpringApplication.java:196)
at com.tjgeo.tpp.JjRunApplication.main(JjRunApplication.java:33)
Caused by: java.lang.ClassNotFoundException: org.apache.logging.log4j.util.ReflectionUtil
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)
解决方法:
1.先在项目启动模块pom文件中添加:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.2.3</version>
</dependency>
2.接着将以下几个依赖也升级到新版本
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.15.0</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.15.0</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j-impl</artifactId>
<version>2.15.0</version>
</dependency>
3.然后就可以正常启动项目了。
1.如果运行程序出现错误:“Exception in thread “main”
java
.
lan
g.No
Class
DefFoundError:
org
/slf4j/LoggerFactory”,这是因为项目缺少slf4j-api.jar和slf4j-
log4j
12.jar这两个jar包导致的错误。2.如果运行程序出现错误:“
java
.
lan
g.No
Class
DefFoundError:
org
/a
Apache
Commons
Logging
使用教程
commons-
logging
Apache
Commons
Logging
项目地址:https://gitcode.com/gh_mirrors/co/commons-
logging
项目介绍
Apache
Commons
Logging
(简称JCL)是一个轻量级的
日志
适配器,允许在运行时配置与其他知名
日志
系统的桥接。JCL提供了一个统一的...
Caused by:
java
.
lan
g.
Class
NotFoundException:
org
.
apache
.
logging
.
log4j
.
util
.
Reflection
Util
解决
方法
Exception in thread "main"
java
.
lan
g.No
Class
DefFoundError:
org
/
apache
/
logging
/
log4j
/
util
/
Reflection
Util
报错
解决
,替换pom文件内的
log4j
依赖
上述是由于找不到
org
/
apache
/
logging
/
log4j
/
util
/
Reflection
Util
类造成,然后发现,这个类所在的包是新引入的,而这个包是在新加入
依赖
后,间接被引入的,因此在新引入的包中,将其排除即可。定位到
Log4j
LoggerFactory.
java
:42,发现确实是加载不到这个类造成的。接下来就要
解决
,为什么加载不到这个类的
问题
。其他可能原因:版本
问题
导致,如。
在使用Maven新建QuitStart类型项目时,引入了MyBatis3.2.0版本的JAR包之后,出现如下错误:
Exception in thread "main"
java
.
lan
g.No
Class
DefFoundError:
org
/
apache
/
log4j
/Priority
at
java
.
lan
g.
Class
.forName0(Native Method)
日志
是记录系统或应用程序在运行过程中所发生事件或行为的详细信息的文件。它通常包括时间戳、事件类型、事件描述等信息,以便在需要时进行故障排查、性能优化、安全审计等工作。
日志
可以帮助开发人员和系统管理员诊断应用程序
问题
,了解系统运行情况,以及存档和监控事件。在
java
中一般都是使用
log4j
2的
日志
框架根节点,其中可定义appenders节点和loggers节点,属性包含以下内容:status:可以用来指定
Log4j
2本身打印
日志
的级别:用来设置配置文件的动态加载时间,单位是秒,最小是5秒。
定位下
Loader
Util
发现
log4j
版本不一致,
log4j
-core-2.17.2在调用
log4j
-api-2.20.0导致的,找一下作恶源,是
org
.elasticsearch7.17.10,用不到
log4j
的话直接排除掉。
Exception in thread "main"
java
.
lan
g.No
Class
DefFoundError:
org
/
apache
/
logging
/
log4j
/
util
/
Reflection
Util
......
Caused by:
java
.
lan
g.
Class
NotFoundException:
org
.
apache
.
logging
.
log4j
.
util
.Reflec...
文章目录添加es的jar包No
Class
DefFoundError:
org
/
apache
/
logging
/
log4j
/
util
/
Reflection
Util
的
解决
办法
在用maven进行spark开发时,如果使用离线批处理,一般都有添加spark-core的jar包。
<dependency>
<groupId>
org
.
apache
.spark</groupId>
<artifactId