温馨提示×

温馨提示×

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

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

Java Module 如何创建

发布时间:2026-08-31 12:55:36 来源:亿速云 阅读:82 作者:小樊 栏目:编程语言

在 Java 9 及以后版本中,Java Module(模块) 是通过 Module System(Project Jigsaw) 引入的。下面我用从零开始的方式,带你一步步创建一个 Java Module。


一、什么是 Java Module?

Java Module 用于明确声明模块之间的依赖关系,主要解决:

  • 类路径(classpath)混乱
  • 隐藏内部实现
  • 更好地支持大型应用和 JDK 本身

每个模块都有自己的:

  • 模块名
  • 导出的包(exports)
  • 依赖的模块(requires)

二、核心文件:module-info.java

每个模块必须有一个:

module-info.java

它通常放在源代码根目录


三、创建 Java Module(示例)

1️⃣ 项目结构(推荐)

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

2️⃣ 编写模块代码

com.example.hello 模块

Hello.java

package com.example.hello;

public class Hello {
    public static String say() {
        return "Hello Module";
    }
}

module-info.java

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

com.example.main 模块

Main.java

package com.example.main;

import com.example.hello.Hello;

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

module-info.java

module com.example.main {
    requires com.example.hello;
}

四、编译 Java Module

1️⃣ 编译 com.example.hello

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

2️⃣ 编译 com.example.main

javac \
  -p out/com.example.hello \
  -d out/com.example.main \
  src/com.example.main/module-info.java \
  src/com.example.main/com/example/main/Main.java

五、运行模块

java \
  -p out/com.example.hello:out/com.example.main \
  -m com.example.main/com.example.main.Main

✅ 输出:

Hello Module

六、常见 module-info.java 指令

指令 作用
exports 包名 导出包供其他模块使用
requires 模块名 依赖某个模块
requires transitive 模块名 传递依赖
opens 包名 允许反射访问
uses 接口 使用服务
provides 接口 with 实现 提供服务

七、普通项目 vs 模块化项目

对比 classpath module-path
依赖 隐式 显式
可见性 全部可见 仅导出
封装

八、常见的坑

忘记 exports

package is not visible

requires 写错模块名
模块名 ≠ 包名

module-info.java 放错目录


九、总结一句话

Java Module = module-info.java + 明确依赖 + 导出包


如果你愿意,我可以:

  • Maven / Gradle 创建模块
  • 模块化 JAR vs 普通 JAR
  • 演示 模块 + 反射 / Spring / 老项目迁移

你现在是 学习模块化原理,还是 实际项目迁移

向AI问一下细节

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

AI