在 Java 9+ 中引入了 Java Module System(模块化),导入(使用)一个 Module 主要有几种常见场景。下面按最常见的用法给你说明。
在模块化项目中:
module-info.java 声明requires 关键字exports 关键字目录结构示例:
src
└── com.example.mymodule
├── module-info.java
└── com
└── example
└── Main.java
module-info.javamodule com.example.mymodule {
// 依赖其他模块
requires java.sql;
}
Main.javapackage com.example;
import java.sql.Connection;
public class Main {
public static void main(String[] args) {
System.out.println("Hello Module");
}
}
✅ 这里 requires java.sql; 就是“导入模块”
比如你有一个模块化的 JAR:
libs/
└── gson-5.0.jar
module-info.javamodule com.example.app {
requires com.google.gson;
}
⚠️ 前提:gson-5.0.jar 内部必须有自己的 module-info.class,否则不算模块。
如果 JAR 没有 module-info:
module com.example.app {
requires gson; // 自动模块名
}
规则:
gson-2.10.1.jar → gson⚠️ Module ≠ import
import com.google.gson.Gson; // 普通 import
前提是:
requires com.google.gson;
并且:
exports com.google.gson;
否则仍然 无法访问。
Module com.google.gson not found
✅ 解决:
--module-pathrequires 正确模块名package is not visible
✅ 解决:
exportsrequiresjavac --module-path libs -d out \
src/com.example.app/module-info.java \
src/com.example.app/com/example/Main.java
java --module-path libs -m com.example.app/com.example.Main
| 场景 | 关键字 |
|---|---|
| 导入模块 | requires |
| 导出包 | exports |
| 导入类 | import |
| 使用第三方 JAR | --module-path |
| 非模块化 JAR | 自动模块 |
如果你愿意,可以告诉我:
我可以直接帮你写 完整可运行示例。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。