IntelliJ IDEA启动RESTful API示例项目报错,求解决方案
解决
java.lang.reflect.InaccessibleObjectException错误的步骤 问题根源
这个错误是JDK 9+模块化系统的限制导致的:项目代码(或依赖库)通过反射访问了java.base模块中java.lang包的内部成员,而JDK 22默认禁止未授权模块访问这些内部API。
解决方案
方案1:降低JDK版本(优先推荐)
该书示例项目基于旧版JDK开发,适配JDK 8或11无兼容性问题,操作步骤:
- 打开IntelliJ的Project Structure(快捷键
Ctrl+Alt+Shift+S) - 在
Project Settings > Project中,将Project SDK切换为JDK 8或11,同步修改Project language level为对应版本(8或11) - 进入
Modules > Sources标签页,将Language level也设置为对应版本 - 打开
Run/Debug Configurations,确保运行配置的JRE选择刚才设置的JDK版本 - 执行
mvn clean install重新编译项目后启动
方案2:保留JDK 22,添加VM参数开放模块访问
如果坚持使用JDK 22,需通过VM参数授权未命名模块访问内部API:
- 打开IntelliJ的
Run > Edit Configurations... - 找到对应项目的运行配置,在
VM options输入框中添加:--add-opens java.base/java.lang=ALL-UNNAMED - 保存配置后重新启动项目
方案3:同步Maven编译配置
确保pom.xml中maven-compiler-plugin的版本与使用的JDK匹配,例如使用JDK 11时,插件配置如下:
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.1</version> <configuration> <source>11</source> <target>11</target> </configuration> </plugin> </plugins> </build>
修改后执行mvn clean install重新编译。
内容的提问来源于stack exchange,提问作者Piotrek
相关产品推荐
相关产品推荐

