第一个java 9模块程序只需三步:建目录结构、写module-info.java、编译运行;目录需按包名组织,module-info.java须置于源根下,编译用--module-source-path,运行用--module-path和--module指定模块及主类。

写第一个 Java 9 模块程序,核心就三步:建目录结构、写 module-info.java、编译运行。不需要改 JDK 配置,用 JDK 9+ 命令行就能完成。
准备模块目录结构
模块源码必须放在有明确层级的目录中,推荐按包名组织,例如模块名为 com.example.hello,可建如下结构:
-
src/com.example.hello/—— 存放源代码 -
src/com.example.hello/module-info.java—— 必须存在,且在源根下 -
src/com.example.hello/com/example/hello/HelloWorld.java—— 主类,包路径需与目录一致
注意:module-info.java 必须在源码根目录(即 src/com.example.hello/),不能放在 java 子目录里;模块名和目录名不必完全相同,但强烈建议保持一致,避免编译器识别异常。
编写 module-info.java 文件
这是模块的“身份证”,必须放在每个模块源根目录下。最简内容如下:
module com.example.hello {
requires java.base;
}
说明:
-
module是关键字,后面跟模块名(符合包命名规范,用点分隔) -
requires java.base可省略——因为所有模块默认隐式依赖java.base - 如果要用
System.out或String等基础类,不写这行也正常运行
编写主类并编译运行
在 com/example/hello/HelloWorld.java 中写一个普通类:
package com.example.hello;
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello from module: " + HelloWorld.class.getModule().getName());
}
}
然后执行命令(在项目根目录下,如 C:\myapp):
- 编译:
javac --module-source-path src -d mods $(find src -name "*.java")(Windows 可用dir /s /b src\**\*.java替代 find) - 运行:
java --module-path mods --module com.example.hello/com.example.hello.HelloWorld
关键参数说明:
-
--module-source-path指向源码根目录(src),让编译器自动发现模块 -
--module-path(-p)替代旧版-cp,指定编译后模块所在位置(如mods) -
--module后格式为/,不可省略斜杠前部分
常见问题提示
如果报错 module not found,检查三点:
- 是否漏了
module-info.java,或它没放在模块源根下 - 编译输出目录(
-d mods)是否被误清空,导致mods/com.example.hello下没有module-info.class - 运行时
--module-path是否指向包含模块子目录的父目录(不是直接指向mods/com.example.hello)
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











