mybatis-plus p6spy 报错,java.lang.NoClassDefFoundError: Could not initialize class com.p6spy.engine.sp

在按照mybatis-plus官方文档集成p6spy进行SQL分析时,遇到两个错误。错误信息包括`NoClassDefFoundError: Could not initialize class com.p6spy.engine.spy.SpyModule`。排查过程中,确认了pom.xml中依赖正确,配置文件如yml和spy.properties也无误。最终发现是spy.properties文件中的数字2后面多了一个空格导致解析错误,修正后问题解决。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

按照 mybatis-plus的文档来加入 p6spy 后,执行单元测试出现两个错误,

https://baomidou.com/guide/p6spy.html

执行 SQL 分析打印

该功能依赖 p6spy 组件,完美的输出打印 SQL 及执行时长 3.1.0 以上版本

错误1:

java.lang.NoClassDefFoundError: Could not initialize class com.p6spy.engine.spy.P6ModuleManager
	at com.p6spy.engine.spy.P6SpyDriver.findPassthru(P6SpyDriver.java:117)
	at com.p6spy.engine.spy.P6SpyDriver.connect(P6SpyDriver.java:87)
	at com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:138)
	at com.zaxxer.hikari.pool.PoolBase.newConnection(PoolBase.java:358)
	at com.zaxxer.hikari.pool.PoolBase.newPoolEntry(PoolBase.java:206)
	at com.zaxxer.hikari.pool.HikariPool.createPoolEntry(HikariPool.java:477)
	at com.zaxxer.hikari.pool.HikariPool.checkFailFast(HikariPool.java:560)
	at com.zaxxer.hikari.pool.HikariPool.<init>(HikariPool.java:115)

 错误2:

java.lang.ExceptionInInitializerError
	at com.p6spy.engine.spy.P6SpyDriver.findPassthru(P6SpyDriver.java:117)
	at com.p6spy.engine.spy.P6SpyDriver.connect(P6SpyDriver.java:87)
	at com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:138)
	at com.zaxxer.hikari.pool.PoolBase.newConnection(PoolBase.java:358)
	at com.zaxxer.hikari.pool.PoolBase.newPoolEntry(PoolBase.java:206)
	at com.zaxxer.hikari.pool.HikariPool.createPoolEntry(HikariPool.java:477)
	at com.zaxxer.hikari.pool.HikariPool.checkFailFast(HikariPool.java:560)
	at com.zaxxer.hikari.pool.HikariPool.<init>(HikariPool.java:115)
	at com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:112)
	at org.springfr
### 配置P6SpyMyBatis-Plus 为了实现数据库查询语句的日志记录功能,在MyBatis-Plus项目中可以集成P6Spy工具。具体操作如下: #### 添加依赖项 在`pom.xml`文件内加入必要的Maven依赖来引入P6Spy库。 ```xml <dependency> <groupId>p6spy</groupId> <artifactId>p6spy</artifactId> <version>3.9.1</version><!-- 版本号可根据实际情况调整 --> </dependency> ``` #### 修改数据源配置 编辑项目的application.yml或application.properties文件,更改原有的JDBC URL指向至P6Spy代理地址,并设置其他必要参数。 对于YAML格式的应用程序属性文件而言: ```yaml spring: datasource: url: jdbc:p6spy:mysql://localhost:3306/mydb?useSSL=false&serverTimezone=UTC username: root password: 123456 driver-class-name: com.p6spy.engine.spy.P6SpyDriver ``` 如果采用的是properties风格,则应如此编写: ```properties spring.datasource.url=jdbc:p6spy:mysql://localhost:3306/mydb?useSSL=false&serverTimezone=UTC spring.datasource.username=root spring.datasource.password=123456 spring.datasource.driver-class-name=com.p6spy.engine.spy.P6SpyDriver ``` 以上修改均需注意替换其中的数据库连接字符串部分以匹配实际环境需求[^1]。 #### 编辑P6Spy配置文件 创建名为`spy.properties`的新资源文件放置于classpath路径下(通常位于src/main/resources目录),并按照官方文档说明填写相应选项完成自定义化设定;例如开启SQL日志输出到控制台等功能特性。 ```properties modulelist=com.p6spy.engine.logging.P6LogFactory,com.p6spy.engine.outage.P6OutageFactory logMessageFormat=com.p6spy.engine.spy.appender.Slf4JLogger appender=com.p6spy.engine.spy.appender.Slf4JLogger excludecategories=info,debug,result,batch logfile=stdout ``` 这段配置指定了使用SLF4J作为日志框架适配器以及仅打印错误级别的消息条目等内容[^2]。 通过上述步骤即可成功地把P6Spy整合进基于Spring Boot和MyBatis-Plus构建的企业级应用当中去,从而方便开发者们更好地监控应用程序同关系型数据库之间的交互情况。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值