java如何调用其他模块下的类

java如何调用其他模块下的类

作者:Joshua Lee发布时间:2026-02-11阅读时长:0 分钟阅读次数:1

用户关注问题

Q
在Java项目中,如何跨模块访问类?

我在一个Java项目里,有多个模块,想在一个模块中使用另一个模块的类,该怎么配置才能实现?

A

跨模块访问Java类的方法

要在一个模块中调用另一个模块的类,需要确保两个模块正确设置依赖关系。如果使用Maven或Gradle这类构建工具,可以在模块的配置文件中添加依赖。另外,模块中的类需要是公共的(public),且所在模块的module-info.java中要导出相应的包,并且使用该模块的模块中声明依赖。这样编译时和运行时才能正确识别并访问类。

Q
Java的module-info.java文件对调用其他模块类有什么影响?

我听说Java 9引入了模块系统,想了解module-info.java是如何影响调用其他模块下的类的?

A

module-info.java在模块调用中的作用

module-info.java文件定义了模块的名称以及模块之间的依赖和导出规则。如果一个模块想要调用另一个模块里的类,那个模块必须在自身的module-info.java中使用requires关键字声明依赖。同时,被调用模块需要用exports关键字导出包含目标类的包。这样模块系统才能在编译和运行时正确识别权限,允许访问跨模块的类。

Q
如何避免Java模块间调用类时出现ClassNotFoundException?

在调用其他模块里的类时,偶尔遇到ClassNotFoundException,如何排查和避免这个问题?

A

解决跨模块调用中ClassNotFoundException的常见方法

出现ClassNotFoundException通常是因为运行时无法找到目标类,常见原因包括模块未正确导出包、模块依赖未配置、类路径配置错误等。请检查被调用模块的module-info.java是否导出了目标类所在的包,调用模块是否声明了正确的requires依赖。同时确认构建工具的依赖配置和IDE的模块设置无误,确保运行时能访问到所需的模块和类。