学习 Java 模块化(Java Module System,即 JPMS,从 Java 9 引入),建议按“概念 → 语法 → 实战 → 工程化”的路线来。下面给你一套比较清晰的学习路径。
在 Java 9 之前:
package + classpath 管理代码Java 模块解决:
一个模块 = 一组包 + module-info.java
my.module/
├── module-info.java
└── com/example/MyClass.java
模块的“说明书”
module com.example.myapp {
requires java.base;
exports com.example.api;
}
requires:依赖其他模块exports:导出包(别人才能用)opens:运行时反射开放provides ... with:服务注册uses:使用服务hello/
├── module-info.java
└── com/example/Main.java
module com.example.hello {
exports com.example;
}
package com.example;
public class Main {
public static void main(String[] args) {
System.out.println("Hello Module");
}
}
javac -d out $(find . -name "*.java")
java --module-path out --module com.example.hello/com.example.Main
project/
├── app/
│ ├── module-info.java
│ └── com/app/Main.java
└── service/
├── module-info.java
└── com/service/HelloService.java
module com.example.service {
exports com.service;
}
module com.example.app {
requires com.example.service;
}
⚠️ 不 requires 就不能用
⚠️ 不 exports 就不能访问
exports 不够opens com.example.internal;
两种方案:
MANIFEST.MF 加 Automatic-Module-Namerequires / exports / opensjava.base 等)java --describe-module java.base你可以告诉我:
我可以直接给你:
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。