在 Java 9+ 中引入了 Module System(模块系统),模块通过 module-info.java 文件来声明依赖和导出内容。下面从概念 → 导入方式 → 示例系统说明。
一个 Java 模块通常包含:
module-name/
├── module-info.java
└── com/xxx/...
module com.example.app {
requires java.base; // 依赖其他模块
requires com.example.lib;
exports com.example.app.api; // 对外暴露的包
}
requires(最常见)在你的 module-info.java 中:
module com.example.app {
requires com.example.lib;
}
这表示:当前模块依赖 com.example.lib 模块
⚠️ 注意:
| 场景 | 使用 |
|---|---|
| 模块化项目 | module path |
| 老项目(jar) | classpath |
| 混合 | 自动模块 |
javac -d out \
--module-path lib \
src/com.example.app/module-info.java \
src/com.example.app/...
java --module-path lib -m com.example.app/com.example.app.Main
如果 jar 没有 module-info.java:
requires javafx.controls; // jar 名自动成模块
⚠️ 要求 jar 名合法(无空格、特殊字符)
在 jar 中添加 module-info.java
JDK 模块直接 requires:
requires java.sql;
requires java.xml;
查看所有 JDK 模块:
java --list-modules
❌ Module not found
❌ Package not visible
exportsrequires❌ Unable to derive module
<dependency>
<groupId>com.example</groupId>
<artifactId>lib</artifactId>
<version>1.0</version>
</dependency>
Maven 默认是 classpath,需要额外配置模块。
Java Module 的“导入”就是:在
module-info.java里写requires 模块名,并确保模块在 module path 上。
如果你有 具体报错 / 项目结构 / 使用的框架(Spring、JavaFX 等),我可以给你更精确的示例。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。