Java 9模块无法解析求助:跨项目模块依赖配置问题
解决Eclipse Oxygen中Java 9模块「Cannot be resolved as a module」问题
我太懂你现在的困扰了——在支持Java 9的Eclipse Oxygen 4.7.3a里,想让projectOne调用projectTwo的Classifiable类,结果模块导入时弹出「Cannot be resolved as a module」的错误,着实让人挠头。我来给你一步步拆解解决:
1. 先把projectTwo的模块配置做对
projectTwo得是个正经的Java 9显式模块,不仅要有module-info.java,还得把Classifiable所在的包导出来,不然projectOne就算引用了模块也拿不到类。
打开projectTwo的module-info.java,改成这样:
module projectTwo { // 导出Classifiable所在的包,让其他模块能访问 exports com.package2.second; }
2. 修正projectOne的模块依赖声明
你提到projectOne的module-info.java里写了req...,应该是requires语句,但一定要保证模块名和projectTwo的模块名完全一致(就是上面代码里的projectTwo,大小写也不能错!)。
projectOne的module-info.java正确写法:
module projectOne { // 声明依赖projectTwo模块 requires projectTwo; }
3. 在Eclipse里配置项目间的模块依赖
光写对配置文件还不够,Eclipse得知道这俩项目的依赖关系:
- 右键点击projectOne → 选「Properties」
- 左侧菜单找到「Java Build Path」,切到「Projects」标签页
- 点击「Add...」,选中projectTwo后点「OK」
- 再切到「Modulepath」标签页,确认projectTwo是在模块路径上(不是类路径!Java 9模块必须放在模块路径里才能被识别)
- 最后点「Apply and Close」
4. 清理+重启Eclipse(玄学但有用)
有时候Eclipse的缓存会搞事情,试试:
- 顶部菜单点「Project」→ 「Clean...」,选中两个项目清理构建文件
- 重启Eclipse,再重新构建项目
5. 检查Java版本配置
确保两个项目都用的是Java 9环境:
- 右键项目 → 「Properties」→ 「Java Build Path」→ 「Libraries」,确认JRE System Library是Java 9
- 再到「Java Compiler」标签页,勾选「Use compliance from execution environment 'JavaSE-9' on the 'Modulepath'」,保证编译级别是Java 9
做完这些,你就能在Classificator类里正常导入并使用Classifiable了:
import com.package2.second.Classifiable; public class Classificator { // 现在可以放心用Classifiable啦 }
内容的提问来源于stack exchange,提问作者Yassine Badache
相关产品推荐
相关产品推荐

