升级JDK17,报错:Exception java.lang.reflect.InaccessibleObjectException: Unable to make protected native
·
升级JDK17,报错:Exception java.lang.reflect.InaccessibleObjectException: Unable to make protected native
问题重点及分析
module java.base does not “opens java.lang” to unnamed module
翻译:”base 模块中没将 lang 模块打包到未命名模块。
JDK17中把 accessiable 属性设置为 false 了。
在 JDK1.8 及之前,这个属性是打开的,意思就是 1.8 前会反射出里面的所有方法。我们都知道反射会消耗性能。然而这些方法的使用频率不高,为了这些比较少调用的代码牺牲这些性能不值得,所以从 JDK1.8 后大量包的可访问反射属性都被关闭了,lang 就是其中之一。
解决方法:
启动项目时,添加JVM参数:
--add-opens java.base/java.lang=ALL-UNNAMED --add-opens java.base/java.lang.reflect=ALL-UNNAMED
亲测有效。
更多推荐
所有评论(0)