【Bug】Unable to make field private final int java.time.LocalDate.year accessible

问题描述

在使用这段代码时new Gson().toJson(result),会出现如下异常

c 复制代码
Exception in thread "main" java.lang.reflect.InaccessibleObjectException: Unable to make field private final int java.time.LocalDate.year accessible: module java.base does not "opens java.time" to unnamed module @2d9d4f9d
	at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:354)
	at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:297)
	at java.base/java.lang.reflect.Field.checkCanSetAccessible(Field.java:178)
	at java.base/java.lang.reflect.Field.setAccessible(Field.java:172)
	at com.google.gson.internal.reflect.UnsafeReflectionAccessor.makeAccessible(UnsafeReflectionAccessor.java:44)
	at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.getBoundFields(ReflectiveTypeAdapterFactory.java:159)
	at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.create(ReflectiveTypeAdapterFactory.java:102)
	at com.google.gson.Gson.getAdapter(Gson.java:489)
	at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.createBoundField(ReflectiveTypeAdapterFactory.java:117)
	at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.getBoundFields(ReflectiveTypeAdapterFactory.java:166)
	at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.create(ReflectiveTypeAdapterFactory.java:102)
	at com.google.gson.Gson.getAdapter(Gson.java:489)
	at com.google.gson.Gson.toJson(Gson.java:727)
	at com.google.gson.Gson.toJson(Gson.java:714)
	at com.google.gson.Gson.toJson(Gson.java:669)
	at com.google.gson.Gson.toJson(Gson.java:649)
	at com.example.demo.config.GsonConfig.main(GsonConfig.java:85)

原因分析:

gson不能使用反射,将LocalDate,LocalDateTime等时间类型反射调用;

请检查一下,你的项目JDK的版本是否是JDK9以上(Gson 是通过反射的方式来访问相关的属性的,而这一方式在 JDK 9 开始就已经被禁用了);


解决方案:

有两种解决方式:

1.使用jdk1.8版本;

2.在java启动命令行添加:--add-opens java.base/java.time=ALL-UNNAMED虚拟机选项(VM Options)来使得反射功能能够正常使用

相关推荐
叫我:松哥4 分钟前
基于Python的实习僧招聘数据采集与可视化分析,使用matplotlib进行可视化
开发语言·数据库·python·课程设计·matplotlib·文本挖掘
花花无缺10 分钟前
泛型类和泛型方法
java·后端
澡点睡觉19 分钟前
golang的面向对象编程,struct的使用
开发语言·爬虫·golang
泉城老铁30 分钟前
Spring Boot 中实现 COM 口数据监听并解析十六进制数据,结合多线程处理
java·后端·物联网
熊猫片沃子1 小时前
浅谈SpringBoot框架的优势
java·spring boot·后端
33255_40857_280591 小时前
RocketMQ高级特性实战:Java开发者的进阶指南
java·rocketmq
北京_宏哥1 小时前
🔥《刚刚问世》系列初窥篇-Java+Playwright自动化测试-32- 操作日历时间控件-下篇(详细教程)
java·前端·面试
绿炮火1 小时前
【MATLAB】(十)符号运算
开发语言·matlab
俄城杜小帅2 小时前
QML与C++交互的方式
开发语言·c++·交互
用户84913717547162 小时前
JDK 17 实战系列(第3期):性能优化与系统增强详解
java·后端·性能优化