Java 9模块系统requires/exports配置问题求助
解决Java 9模块requires/exports配置问题
首先,你的问题核心出在模块名称不匹配和缺少必要的包导出声明上,手动添加依赖只是绕开了模块系统的规范流程,确实不是正确做法。下面一步步帮你修正:
1. 修正模块声明的名称
你的app模块的module-info.java里写的module name是错误的,模块名称必须和你的模块实际标识(通常是目录名)一致。正确的写法应该是:
// app/src/module-info.java module app { requires hello; }
同时确保hello模块的module-info.java模块名与模块目录一致:
// hello/src/module-info.java module hello { // 导出hello包,让app模块能访问里面的Hello类 exports hello; }
2. 补充包导出声明
你的Hello.java位于hello/hello目录下(即包名为hello),如果hello模块不添加exports hello;声明,哪怕app模块写了requires hello;,也无法访问这个包下的类——这正是IntelliJ导入提示红色的关键原因。
3. 让IntelliJ自动识别模块依赖
完成上述修改后,你不需要手动在项目结构里添加依赖,IntelliJ会通过模块声明自动识别依赖关系:
- 确认两个模块都是IntelliJ中的Java模块(而非普通Java项目)
- 重新同步项目:如果用Gradle/Maven,点击对应工具窗口的刷新按钮;纯IntelliJ项目可以重启IDE或重新导入项目
验证修改
现在在app/src/start/main.java中导入hello.Hello:
import hello.Hello; public class main { public static void main(String[] args) { Hello.sayHello(); // 假设Hello类包含该方法 } }
此时导入语句应该不再显示红色,运行项目也能正常访问Hello类的内容。
内容的提问来源于stack exchange,提问作者HahnSolo
相关产品推荐
相关产品推荐

