解决Spring boot : java.lang.ExceptionInInitializerError报错

本文解析了一个具体的Java编译时错误:ExceptionInInitializerError,并详细解释了错误的原因及如何解决该问题。通过调整配置并重启项目可以有效解决此错误。

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

报错信息

java.lang.ExceptionInInitializerError
Unable to make field private com.sun.tools.javac.processing.JavacProcessingEnvironment$DiscoveredProcessors com.sun.tools.javac.processing.JavacProcessingEnvironment.discoveredProcs accessible: module jdk.compiler does not “opens com.sun.tools.javac.processing” to unnamed module @22d1743e

报错原因

在类的初始化时,出错。也就是说,在加载类时,执行static的属性、方法块时,出错了。

解决方案

在这里插入图片描述
在这里插入图片描述
然后apply,ok,重启项目就好了!

### 如何解决导出 Excel 时遇到的 `ExceptionInInitializerError` 异常 当使用 Java 进行 Spring Boot 项目的开发并尝试通过 EasyExcel 或 Apache POI 导出 Excel 文件时,可能会遇到 `java.lang.ExceptionInInitializerError` 异常。此异常通常表示静态初始化器失败或类加载期间出现问题。 #### 原因分析 该异常可能由多种因素引起,包括但不限于: - 类路径配置错误导致依赖库缺失或版本冲突[^1]。 - 静态资源文件位置不对或是编码问题引发读取失败[^3]。 - 易于忽略的是 JVM 参数设置不当影响某些第三方组件的行为[^4]。 针对上述情况的具体解决方案如下: #### 解决方案概述 ##### 检查依赖项和环境配置 确认 Maven/Gradle 中定义的所有依赖都已正确引入,并且不存在重复或相互矛盾的情况。特别是对于像 EasyExcel 和 Apache POI 这样的外部库来说,保持最新稳定版有助于减少潜在风险。 ##### 更新工具链至更高版本 如果正在使用的 EasyExcel 版本较低,则建议升级到较新的发行版来获取更好的性能优化和支持特性。同时也要注意调整相应的 API 调用方式以适应新版本变化。 ##### 修改代码逻辑处理边界条件 确保在执行任何操作之前已经完成了必要的准备工作,比如验证输入参数的有效性和完整性;另外,在捕获异常的同时应给予充分的日志记录以便后续排查问题所在[^5]。 ```java // 示例:增强健壮性的代码片段 if (data != null && !data.isEmpty()) { try { // 正确地创建 writer 对象前先完成模块注册 StaticComponentContainer.Modules.exportAllToAll(); List<User> userList = userService.list(); ExcelWriter excelWriter = null; try { excelWriter = EasyExcel.write("D:/user.xlsx", User.class).build(); WriteSheet writeSheet = EasyExcel.writerSheet("普通订单").build(); excelWriter.write(userList, writeSheet); } finally { if (excelWriter != null) { excelWriter.finish(); } } } catch (NullPointerException e) { logger.error("Null pointer occurred while processing data.", e); throw new RuntimeException(e.getMessage(), e); } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

--流星。

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值