在IntelliJ Idea中运行RinSim示例时出现引导层初始化错误
解决IntelliJ IDEA中运行RinSim示例时的模块描述符错误
你遇到的这个java.lang.module.FindException问题,本质是JDK 9+引入的**Java平台模块系统(JPMS)**和旧的非模块化JAR包冲突导致的。jppf-client-4.1.3.jar是没有模块描述符的老版本依赖,而IntelliJ在使用JDK 10时会自动尝试为这类JAR推导模块信息,进而触发错误——这也是为什么Eclipse能正常运行的原因:Eclipse对JPMS的兼容逻辑和IntelliJ不同,默认不会强制推导非模块化JAR的模块描述符。
下面是具体的排查和解决步骤:
1. 统一项目的JDK版本为8
你的JRE用的是1.8,但项目SDK可能配置成了JDK 10,这是核心矛盾点:
- 打开
File > Project Structure(快捷键:Ctrl+Alt+Shift+S) - 进入
Project Settings > Project:- 将
Project SDK切换为JDK 8(如果没有,点击New添加你的本地JDK 8) - 将
Project language level设置为8 - Lambdas, type annotations etc.
- 将
- 切换到
Modules标签页,确保每个模块的Module SDK也设置为JDK 8
2. 调整运行配置的类路径处理
如果必须使用JDK 10,或者切换JDK 8后问题仍存在,需要让IntelliJ把非模块化JAR放到Classpath而非Modulepath:
- 打开右上角的
Run/Debug Configurations(运行按钮旁的下拉菜单,选Edit Configurations) - 找到你运行的RinSim示例配置:
- 在
Configuration标签页,找到Use classpath of module,选择正确的项目模块 - 切换到
Modify options,勾选Add VM options,添加参数:--illegal-access=permit(允许旧代码的反射访问,绕过模块系统的限制) - 或者更彻底的:在
VM options里添加--add-modules java.se.ee,确保所有必要的Java EE模块被加载
- 在
3. 修正Maven编译配置(如果是Maven项目)
检查你的pom.xml,确保编译插件指定了JDK 8的版本,避免IntelliJ用JDK 10编译:
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.1</version> <configuration> <source>1.8</source> <target>1.8</target> <encoding>UTF-8</encoding> </configuration> </plugin> </plugins> </build>
修改后,执行mvn clean install,再点击IntelliJ右侧Maven窗口的刷新按钮,重新导入依赖。
4. 删除自动生成的模块描述符
如果项目根目录自动生成了module-info.java文件,直接删除它——RinSim的示例项目不需要模块描述符,这个文件会强制IntelliJ启用JPMS,引发冲突。
按以上步骤排查后,应该就能解决这个初始化错误了。
内容的提问来源于stack exchange,提问作者SvanteK
相关产品推荐
相关产品推荐

