温馨提示×

温馨提示×

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

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

Java Module 怎么写代码

发布时间:2026-08-31 15:05:40 来源:亿速云 阅读:84 作者:小樊 栏目:编程语言

Java 9+ 中引入了 Java Module System(JPMS),模块化的核心就是 module-info.java。下面我从 是什么 → 怎么写 → 完整示例 → 常见规则 给你讲清楚。


一、什么是 Java Module

Java Module = 一组强封装的包 + 明确的依赖声明

✅ 明确导出哪些包
✅ 明确依赖哪些模块
✅ 强封装(不导出的包外部不能访问)


二、最基本的 Module 写法

1️⃣ 目录结构(推荐)

src
 └── main
     └── java
         ├── module-info.java
         └── com.example.hello
             └── Hello.java

2️⃣ module-info.java(核心)

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

module 模块名
exports 包名:允许别的模块访问


3️⃣ 普通 Java 类

package com.example.hello;

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

三、模块依赖(requires)

如果模块 A 使用模块 B:

模块 B

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

模块 A

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

四、完整多模块示例(最常见)

项目结构

project
 ├── app
 │   └── src/main/java
 │       ├── module-info.java
 │       └── com.example.app.App.java
 └── util
     └── src/main/java
         ├── module-info.java
         └── com.example.util.StringUtil.java

util 模块

// module-info.java
module com.example.util {
    exports com.example.util;
}
package com.example.util;

public class StringUtil {
    public static String upper(String s) {
        return s.toUpperCase();
    }
}

app 模块

// module-info.java
module com.example.app {
    requires com.example.util;
}
package com.example.app;

import com.example.util.StringUtil;

public class App {
    public static void main(String[] args) {
        System.out.println(StringUtil.upper("hello"));
    }
}

五、常见 Module 指令速查

指令 作用
exports 包 导出包
requires 模块 依赖模块
requires transitive 模块 依赖传递
opens 包 允许反射
opens 包 to 模块 只允许指定模块反射
uses 接口 使用服务
provides 接口 with 实现 提供服务

六、反射 & 框架(Spring / MyBatis)注意

❗ Java Module 默认禁止反射

如果你用 Spring / Hibernate:

opens com.example.app to spring.core;

或简单粗暴(仅学习用):

open module com.example.app {
    requires com.example.util;
}

七、编译 & 运行(了解即可)

javac -d out --module-source-path src $(find src -name "*.java")
java --module-path out -m com.example.app/com.example.app.App

(实际项目一般用 Maven / Gradle


八、什么时候该用 Module?

✅ JDK 内部模块(java.base 等)
✅ 大型项目 / 库
✅ 强封装需求
❌ 小型项目、普通应用(可以不急着用)


九、一句话总结

Java Module = module-info.java 里声明 exports + requires

如果你愿意,我可以:

  • ✅ 给你 Maven / Gradle 模块化示例
  • ✅ 对比 Module vs 普通项目
  • ✅ 讲 Spring Boot 与 Module 的坑

你现在是 学习阶段 还是 实际项目用

向AI问一下细节

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

AI