You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:06:04