問(wèn)題描述
在使用這段代碼時(shí)new Gson().toJson(result)
,會(huì)出現(xiàn)如下異常
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
等時(shí)間類(lèi)型反射調(diào)用;
請(qǐng)檢查一下,你的項(xiàng)目JDK的版本是否是JDK9以上(Gson 是通過(guò)反射的方式來(lái)訪(fǎng)問(wèn)相關(guān)的屬性的,而這一方式在 JDK 9 開(kāi)始就已經(jīng)被禁用了);文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-726684.html
解決方案:
有兩種解決方式:
1.使用jdk1.8版本;
2.在java啟動(dòng)命令行添加:--add-opens java.base/java.time=ALL-UNNAMED
虛擬機(jī)選項(xiàng)(VM Options)來(lái)使得反射功能能夠正常使用文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-726684.html
到了這里,關(guān)于【Bug】Unable to make field private final int java.time.LocalDate.year accessible的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!