温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Java Module 如何入门

发布时间:2026-08-31 18:01:48 来源:亿速云 阅读:93 作者:小樊 栏目:编程语言

下面用循序渐进的方式,带你从 0 入门 Java Module(JPMS,Java Platform Module System),适合已经会一点 Java(类、包、Maven)的人。


一、为什么要学 Java Module(先建立认知)

Java 9 开始,Java 引入了 Module System,主要解决:

  • 类路径(classpath)混乱
  • 隐式依赖、版本冲突
  • JDK 内部 API 被随意访问
  • 大型项目依赖不清晰

✅ Module 的核心目标:
明确“我能用什么,我不能用什么”


二、最核心概念(记住这 4 个)

1️⃣ Module(模块)

比 package 更大一级的组织单位

一个 module =

  • 若干 package
  • 一个 module-info.java

2️⃣ module-info.java(最重要)

每个模块 必须有 一个:

module com.example.demo {
}

位置:

src/
 └── com.example.demo/
     ├── module-info.java
     └── com/example/demo/Main.java

3️⃣ requires(依赖别的模块)

module com.example.demo {
    requires java.sql;
}

表示:

本模块需要使用 java.sql 模块


4️⃣ exports(暴露自己的包)

module com.example.demo {
    exports com.example.demo.api;
}

表示:

只把 api 包对外可见,其他包默认私有


三、写一个最小可运行 Module 示例

1️⃣ 目录结构

mods/
 └── com.example.hello/
     ├── module-info.java
     └── com/example/hello/Hello.java

2️⃣ module-info.java

module com.example.hello {
    exports com.example.hello;
}

3️⃣ Hello.java

package com.example.hello;

public class Hello {
    public static void main(String[] args) {
        System.out.println("Hello Module!");
    }
}

4️⃣ 编译

javac -d out/com.example.hello \
  mods/com.example.hello/module-info.java \
  mods/com.example.hello/com/example/hello/Hello.java

5️⃣ 运行

java --module-path out \
     --module com.example.hello/com.example.hello.Hello

输出:

Hello Module!

✅ 你已经完成了第一个 Java Module!


四、模块之间的依赖(必学)

模块 A 提供功能

module com.example.service {
    exports com.example.service;
}

模块 B 使用

module com.example.app {
    requires com.example.service;
}

⚠️ 注意:

  • requires → 编译报错
  • exports → 别的模块访问不到

五、常见关键词速查表

关键字 作用
requires 依赖其他模块
exports 暴露包
opens 反射可见(框架常用)
provides ... with SPI
uses 使用 SPI
transitive 传递依赖

六、和 Maven / Gradle 的关系

✅ Module ≠ 构建工具
✅ Maven / Gradle 仍然管理依赖

现代做法:

  • Maven 管理 jar
  • Module 管理 访问边界

Maven 示例(简化):

<plugin>
  <artifactId>maven-compiler-plugin</artifactId>
  <configuration>
    <release>17</release>
  </configuration>
</plugin>

七、新手常见坑

❌ 忘记 module-info.java
❌ 只 requiresexports
❌ 用 classpath 思维理解 module
❌ 试图访问 JDK 内部类(sun.*


八、学习路线建议

  1. ✅ 会写 module-info.java
  2. ✅ 理解 requires / exports
  3. ✅ 多模块项目
  4. ✅ 服务加载(SPI)
  5. ✅ 结合 Maven / Spring Boot

九、推荐学习资源

  • 官方文档
    https://openjdk.org/projects/jigsaw/
  • 《Java 9 Modular Programming》
  • Baeldung Java Module 教程
  • Oracle JPMS Guide

如果你愿意,我可以:

  • ✅ 用 Spring Boot + Module 示例
  • ✅ 帮你把现有项目改造成 Module
  • ✅ 画一张 Module 依赖图

你现在是 Java 几?有没有现成项目?

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI