0

0

Java模块化入门:创建并验证一个简单模块

心靈之曲

心靈之曲

发布时间:2025-11-07 18:38:14

|

777人浏览过

|

来源于php中文网

原创

Java模块化入门:创建并验证一个简单模块

本文旨在提供一个简洁明了的java模块创建指南。通过介绍`module-info.java`文件的编写、模块jar文件的正确组织结构,以及使用`jar`工具进行模块验证的方法,帮助开发者快速理解并实践java平台模块系统(jpms)中的基础模块化概念。

Java模块系统(JPMS),自Java 9引入,旨在提高Java应用的可靠性、安全性、性能和可维护性。它通过将代码组织成独立的模块,明确声明其依赖和导出的API,从而实现更强的封装性和更清晰的结构。创建一个简单的Java模块是掌握JPMS的第一步。

核心组件:module-info.java

创建Java模块的核心在于module-info.java文件。这个文件定义了模块的名称、它导出的包(即对其他模块可见的API),以及它所依赖的其他模块。对于一个只包含一个包的简单库,并且只依赖于java.base(所有Java模块隐式依赖的基础模块),module-info.java的内容会非常直接。

示例:module-info.java

假设你的库包含一个包org.foo.bar.pkgname,你希望将它暴露给其他模块使用。你的module-info.java文件将如下所示:

立即学习Java免费学习笔记(深入)”;

module org.foo.bar {
    exports org.foo.bar.pkgname;
}
  • module org.foo.bar:定义了模块的唯一名称。遵循反向域名约定是一个好的实践。
  • exports org.foo.bar.pkgname:声明org.foo.bar.pkgname包中的所有公共类型(public classes and interfaces)都将对其他模块可见。

构建模块JAR文件

在编写完module-info.java文件和你的Java类之后,你需要将它们编译并打包成一个模块化的JAR文件。关键在于module-info.class文件必须位于JAR的根目录。

假设你的项目结构如下:

my-module-project/
├── module-info.java
└── org
    └── foo
        └── bar
            └── pkgname
                ├── X.java
                └── Y.java

编译步骤:

  1. 编译Java源文件: 首先,你需要将module-info.java和你的所有Java类编译成.class文件。你可以创建一个输出目录(例如out)来存放这些编译后的文件。

    # 假设当前工作目录是 my-module-project
    javac -d out module-info.java org/foo/bar/pkgname/*.java

    这条命令会将module-info.class以及X.class、Y.class等编译后的类文件输出到out目录中,并保持原有的包结构。

    风易在线销售系统
    风易在线销售系统

    《风易在线销售系统》是一套为企业电子商务项目量身设计打造的在线商业销售系统,本系统将商品管理、客户管理、订单管理、信息管理、界面管理、系统管理等功能无缝融合,并且提供简单易用的后台管理平台,独家首创的模版内核系统,以及诸多实用的辅助模块。为客户提供了一个低成本,高效率,专业化的在线销售建设方案。 【新增】新增后台选择每页显示数据数量。 【新增】新增一个单客服模式功能。 【新增】新增根据一级分类显示

    下载
  2. 创建模块JAR文件: 接下来,使用jar工具将out目录中的所有内容打包成一个模块化的JAR文件。

    # 假设当前工作目录是 my-module-project
    jar --create --file bar.jar -C out .

    这条命令会创建一个名为bar.jar的模块化JAR文件。-C out .表示将out目录下的所有内容(包括module-info.class和编译后的类文件)打包到JAR的根目录。

模块JAR文件结构

一个有效的模块化JAR文件必须将module-info.class文件放置在其根目录。典型的内部结构应如下所示:

bar.jar (内部结构)
├── module-info.class
└── org
    └── foo
        └── bar
            └── pkgname
                ├── X.class
                └── Y.class

这种结构确保了JVM能够识别该JAR为一个模块。

验证模块

创建JAR文件后,你可以使用jar --describe-module命令来验证它是否被正确识别为一个Java模块,并查看其模块描述信息。

jar --describe-module --file bar.jar

如果一切设置正确,你将看到类似以下的输出:

bar.jar
    module org.foo.bar@<版本号>
    exports org.foo.bar.pkgname

(注意:如果创建JAR时没有指定--module-version,版本号可能不会显示或显示为unnamed)

这表明bar.jar已被成功识别为名为org.foo.bar的模块,并导出了org.foo.bar.pkgname包。

注意事项与最佳实践

  • 模块名称唯一性: 模块名称应是唯一的,并且通常建议使用反向域名约定,以避免命名冲突。
  • 依赖声明: 简单模块可能只依赖于java.base。如果你的模块需要其他JDK模块(如java.sql, java.xml)或第三方库,你需要在module-info.java中使用requires指令明确声明这些依赖。
  • 工具链: 虽然上述示例使用了javac和jar命令行工具,但在实际项目中,通常会使用Maven或Gradle等构建工具来自动化模块的编译、打包和依赖管理。这些工具提供了更便捷的方式来配置和构建模块。
  • 强封装性: 模块系统强制执行强封装。只有通过exports导出的包才对其他模块可见。未导出的包中的类型在模块外部是无法访问的,即使它们是公共类型。

总结

创建一个简单的Java模块涉及定义module-info.java文件来声明模块的名称和导出的包,然后将编译后的module-info.class与你的类文件一起打包成一个特定结构的JAR。最后,使用jar --describe-module命令可以方便地验证模块的正确性。掌握这些基础知识是深入理解和利用Java模块系统强大功能的第一步。

相关专题

更多
java
java

Java是一个通用术语,用于表示Java软件及其组件,包括“Java运行时环境 (JRE)”、“Java虚拟机 (JVM)”以及“插件”。php中文网还为大家带了Java相关下载资源、相关课程以及相关文章等内容,供大家免费下载使用。

844

2023.06.15

java正则表达式语法
java正则表达式语法

java正则表达式语法是一种模式匹配工具,它非常有用,可以在处理文本和字符串时快速地查找、替换、验证和提取特定的模式和数据。本专题提供java正则表达式语法的相关文章、下载和专题,供大家免费下载体验。

742

2023.07.05

java自学难吗
java自学难吗

Java自学并不难。Java语言相对于其他一些编程语言而言,有着较为简洁和易读的语法,本专题为大家提供java自学难吗相关的文章,大家可以免费体验。

740

2023.07.31

java配置jdk环境变量
java配置jdk环境变量

Java是一种广泛使用的高级编程语言,用于开发各种类型的应用程序。为了能够在计算机上正确运行和编译Java代码,需要正确配置Java Development Kit(JDK)环境变量。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

397

2023.08.01

java保留两位小数
java保留两位小数

Java是一种广泛应用于编程领域的高级编程语言。在Java中,保留两位小数是指在进行数值计算或输出时,限制小数部分只有两位有效数字,并将多余的位数进行四舍五入或截取。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

400

2023.08.02

java基本数据类型
java基本数据类型

java基本数据类型有:1、byte;2、short;3、int;4、long;5、float;6、double;7、char;8、boolean。本专题为大家提供java基本数据类型的相关的文章、下载、课程内容,供大家免费下载体验。

446

2023.08.02

java有什么用
java有什么用

java可以开发应用程序、移动应用、Web应用、企业级应用、嵌入式系统等方面。本专题为大家提供java有什么用的相关的文章、下载、课程内容,供大家免费下载体验。

431

2023.08.02

java在线网站
java在线网站

Java在线网站是指提供Java编程学习、实践和交流平台的网络服务。近年来,随着Java语言在软件开发领域的广泛应用,越来越多的人对Java编程感兴趣,并希望能够通过在线网站来学习和提高自己的Java编程技能。php中文网给大家带来了相关的视频、教程以及文章,欢迎大家前来学习阅读和下载。

16926

2023.08.03

C++ 高级模板编程与元编程
C++ 高级模板编程与元编程

本专题深入讲解 C++ 中的高级模板编程与元编程技术,涵盖模板特化、SFINAE、模板递归、类型萃取、编译时常量与计算、C++17 的折叠表达式与变长模板参数等。通过多个实际示例,帮助开发者掌握 如何利用 C++ 模板机制编写高效、可扩展的通用代码,并提升代码的灵活性与性能。

4

2026.01.23

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Kotlin 教程
Kotlin 教程

共23课时 | 2.8万人学习

C# 教程
C# 教程

共94课时 | 7.3万人学习

Java 教程
Java 教程

共578课时 | 49.7万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号