老项目从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

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐