老项目从jdk 1.8升级到了jdk 17版本,结果运行报错:

java.lang.reflect.InaccessibleObjectException: Unable to make protected void java.lang.Object.finalize() throws java.lang.Throwable accessible: module java.base does not "opens java.lang" to unnamed module @fa4c865

查了一下是java 9及更高版本,引入了新的模块系统,一些旧代码和库不兼容导致的。

因为项目已经上线,整体修改依赖肯定不可能了。

查了一下可以通过修改vm options的参数解决这个问题。

修改方法如下:

在运行/调试配置中,给启动项添加vm options参数,复制一下参数添加进去应用即可。

--add-opens java.base/java.lang=ALL-UNNAMED --add-opens java.base/java.lang.reflect=ALL-UNNAMED

操作如下图:

如果没有vm options可以按快接键ALT+V,或点击下图这个按钮

把上方代码复制一下,添加进去即可

应用后运行,报错就消失了

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐