在IntelliJ IDEA搭建OpenJDK11源码时遇‘package exists in another module’错误
解决‘java: package exists in another module: java.base’错误的方法
核心原因
你将OpenJDK 11源码当作普通Java项目导入,导致IntelliJ IDEA同时加载了Corretto 11自带的java.base模块与源码内的java.base模块,二者包路径重复引发冲突。
具体修复步骤
1. 重新以正确类型导入项目
- 打开IDEA,选择
File > New > Project from Existing Sources - 选中OpenJDK 11源码根目录,在导入向导里选择
Import project from external model,再选Maven(OpenJDK 11基于Maven构建) - 按向导完成导入,确保勾选
Search for projects recursively,让IDEA识别各模块的pom.xml文件
2. 配置SDK并排除冲突模块
- 进入
File > Project Structure > Project Settings > Project,将Project SDK设置为Corretto 11 - 切换到
Modules选项卡,找到java.base模块,点击右侧Dependencies标签页 - 在
Module SDK下拉框选择Corretto 11,再点击+号选择JARs or directories,添加OpenJDK源码中java.base目录下的src文件夹为Sources类型 - 关键操作:在Dependencies列表中找到
Corretto 11对应的依赖,点击Edit,在弹出窗口勾选Exclude,排除SDK自带的java.base模块(或直接删除该依赖,仅保留源码的java.base作为依赖)
3. 调整编译器参数
- 进入
File > Settings > Build, Execution, Deployment > Compiler > Java Compiler - 确保
Use compiler选择javac,在Additional command line parameters中添加:--patch-module java.base=你的OpenJDK11源码路径/java.base(替换为本地实际路径) - 该参数用于用源码中的
java.base修补SDK自带模块,避免冲突
4. 清理缓存并重构项目
- 点击顶部
Build > Clean Project - 再点击
Build > Rebuild Project - 若仍有错误,执行
File > Invalidate Caches... > Invalidate and Restart,清除IDEA缓存后重启
额外注意事项
- 确保OpenJDK 11源码版本与Corretto 11版本一致(如均为11.0.xx),版本不匹配也可能引发异常
- 不要直接将
java.base源码文件夹添加为普通项目的Sources,必须通过模块依赖方式配置
内容的提问来源于stack exchange,提问作者aqingsao
相关产品推荐
相关产品推荐

