在Eclipse中创建Java 9多模块项目遇阻求助
解决Eclipse Oxygen中Java 9 Jigsaw多模块项目的问题
我刚接触Java 9模块系统的时候也踩过一模一样的坑!Eclipse Oxygen对Jigsaw的支持逻辑是每个模块对应一个独立的项目,所以单个普通Java项目里确实不允许存在多个module-info.java文件。想要实现多模块结构,你可以按照以下两种方式来操作:
方案一:纯Eclipse原生多模块管理
- 打开Eclipse Oxygen,在你的工作空间中,依次创建多个Java Module Project(注意不是普通的Java Project):
- 新建项目时选择「Java Module」类型,输入模块名称(比如
com.example.moduleA、com.example.moduleB) - 每个模块项目会自动生成自己的
module-info.java文件和源码目录
- 新建项目时选择「Java Module」类型,输入模块名称(比如
- 配置模块间的依赖:
- 假设模块A需要依赖模块B,先在模块A的
module-info.java中添加声明:requires com.example.moduleB; - 右键模块A → 「Build Path」→ 「Configure Build Path」→ 切换到「Module Path」标签页
- 点击「Add Module」,选择模块B,确认后Eclipse会自动处理模块依赖关系
- 假设模块A需要依赖模块B,先在模块A的
方案二:用Maven管理多模块(更推荐,适合复杂项目)
如果你的项目需要更规范的依赖管理,用Maven来构建多模块会更省心:
- 创建Maven父项目:
- 新建Maven项目,选择「Create a simple project」,Packaging类型选择
pom - 这个父项目不需要源码,只用来统一管理子模块的版本和依赖
- 新建Maven项目,选择「Create a simple project」,Packaging类型选择
- 在父项目下创建子模块:
- 右键父项目 → 「New」→ 「Module」,选择Maven模块类型,依次创建每个子模块
- 每个子模块的
pom.xml中,Packaging类型保持jar,并确保父项目的坐标正确引用 - 在每个子模块的源码目录下创建自己的
module-info.java,编写模块声明
- 配置父项目的
pom.xml:- 添加
<modules>标签,列出所有子模块的名称,比如:<modules> <module>moduleA</module> <module>moduleB</module> </modules>
- 添加
- 子模块间的依赖:
- 在需要依赖其他模块的子模块
pom.xml中,添加对应的<dependency>配置,Eclipse会自动同步到模块路径中
- 在需要依赖其他模块的子模块
注意事项
- 确保你的Eclipse Oxygen已经配置了Java 9及以上版本的JDK,并且每个模块项目的JRE系统库都指向正确的JDK
- 不要尝试在单个普通Java项目中手动添加多个
module-info.java,这不符合Eclipse的模块管理规范,会导致编译错误
内容的提问来源于stack exchange,提问作者Arceus
相关产品推荐
相关产品推荐

