Z
ZHANK
面向对象基础

包与模块系统

理解 package、import、classpath、jar 打包、module-info

包与模块系统

packageimport 是 Java 代码组织的基础,理解它们才能管理好大型项目。

学完本章你将: 理解 package、classpath、jar 打包、模块系统。


package 包

java
// 包声明必须在文件第一行
package com.example.service;

public class UserService {
    public void sayHello() {
        System.out.println("Hello from UserService!");
    }
}

// 使用其他包的类需要 import
import java.util.List;
import java.util.ArrayList;

public class Main {
    public static void main(String[] args) {
        List<String> names = new ArrayList<>();
        names.add("Alice");
    }
}

classpath 与运行

bash
# 编译(指定 classpath)
javac -d out src/com/example/*.java

# 运行
java -cp out com.example.Main

# classpath 查找顺序:
# 1. 当前目录 (.)
# 2. -cp 指定的路径
# 3. CLASSPATH 环境变量

JAR 打包

bash
# 打包为 JAR
jar -cvf myapp.jar -C out/ .

# 创建可执行 JAR(需指定主类)
jar --create --file myapp.jar --main-class com.example.Main -C out/ .

# 运行
java -jar myapp.jar

# 查看 JAR 内容
jar -tf myapp.jar

Java 模块系统(JPMS)

java
// module-info.java(Java 9+)
module com.example.myapp {
    requires java.sql;          // 依赖
    exports com.example.api;    // 导出包
    opens com.example.model;    // 反射开放
}
关键字作用
`requires`声明模块依赖
`exports`导出包给其他模块使用
`opens`允许反射访问