温馨提示×

温馨提示×

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

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

java模块如何配置

发布时间:2026-09-19 05:06:19 来源:亿速云 阅读:91 作者:小樊 栏目:编程语言

“Java 模块”通常指 Java 9 引入的 Module System(JPMS,Java Platform Module System)。下面从概念 → 配置方式 → 常见示例 → 构建工具配置系统讲一下。


一、什么是 Java 模块

Java 模块用于更严格地控制依赖和可见性,核心文件是:

module-info.java

一个模块 = 一组包 + 明确的依赖 + 导出的 API


二、最基础的模块配置

1️⃣ 目录结构示例

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

2️⃣ module-info.java 示例

module com.example.hello {
    requires java.base; // 默认就有,可省略
    exports com.example.hello;
}

3️⃣ Main.java

package com.example.hello;

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

三、module-info.java 常用指令

✅ 声明模块名

module com.example.service { }

✅ 依赖其他模块

requires com.example.util;

✅ 导出包(对外可见)

exports com.example.service.api;

✅ 仅对指定模块开放(反射)

opens com.example.service.internal to com.example.test;

✅ 使用服务(SPI)

uses com.example.spi.Service;

✅ 提供实现

provides com.example.spi.Service with com.example.impl.ServiceImpl;

四、编译和运行(命令行)

编译

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

运行

java --module-path out --module com.example.hello/com.example.hello.Main

五、Maven 中的模块配置

1️⃣ 多模块 Maven 项目

parent-project
 ├── pom.xml
 ├── module-a
 │   └── pom.xml
 └── module-b
     └── pom.xml

parent pom.xml

<modules>
    <module>module-a</module>
    <module>module-b</module>
</modules>

module-a 中使用 Java 模块

<build>
  <plugins>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-compiler-plugin</artifactId>
      <configuration>
        <release>17</release>
      </configuration>
    </plugin>
  </plugins>
</build>

并在 src/main/java/module-info.java 中声明模块。


六、Spring Boot 与 Java 模块(注意)

⚠️ Spring Boot 默认不推荐 JPMS

  • 大量第三方库不支持 module-info.java
  • 通常:
    • 用 Maven/Gradle 多模块
    • 不用 JPMS 的 module-info.java

✅ 正确姿势:

Maven Module ≠ Java Module

七、常见问题

❓ 报错:package is not visible

requires 对应模块
exports 对应包

❓ 反射失败

opens package to module;

❓ 老库不支持模块

--add-opens / --add-exports

八、总结

场景 建议
学习 JPMS 写 module-info.java
企业项目 Maven 多模块
Spring Boot 不用 JPMS
微服务 Maven/Gradle 模块即可

如果你能告诉我:

  • ✅ 用的是 Maven / Gradle
  • ✅ 是 JPMS 模块 还是 项目模块
  • ✅ Java 版本(8 / 11 / 17 / 21)

我可以直接给你可运行模板。

向AI问一下细节

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

AI
助
手