Java基础 - Java 编译,打包,运行

Java Package

package 是 Java 的命名空间机制,用于将类(class)、接口(interface)组织在一起,形成模块化、层次化的结构。

1
2
3
4
5
6
7
project/
└── src/
└── com/
└── companyName/
└── app/
└── models/
└── Person.java

这里的Person.java文件位于包 package com.companyName.app.models;.

导入其他包的类

1
2
import com.companyName.app.models.Person;
import com.companyName.app.models.*;

Java编译与运行

以如下文件结构为例:

1
2
3
4
5
6
7
project-folder/
├── lib/
│ └── gson-2.10.1.jar
├── src/
│ ├── Main.java --> package src
│ └── models/
│ └── Person.java --> package src.models

编译

Java编译基本语法:javac [选项] 文件名.java

1
javac -cp "lib/gson-2.10.1.jar" -d out src/models/Person.java src/Main.java
  • -cp 是 classpath 的缩写,用来告诉编译器 在哪找外部的类和库。
  • -d 指定输出目录

运行

Java运行基本语法:java [选项] 类名

1
2
# 运行时指定classpath
java -cp "out:lib/gson-2.10.1.jar" src.Main
  • ::Linux/macOS 上的路径分隔符

.jar文件

Definition

在 Java 开发中,你写了很多 .java 文件,编译之后变成 .class 文件。但是如果想要

  1. 让别人用你的程序
  2. 部署到服务器上运行
  3. 用到很多类和资源文件
    管理许多 .class 文件变成了难题,这时就要用 .jar 来打包这些零碎的文件,合成一个独立的、结构良好的文件。这个文件可以运行,也可以作为库被其他项目引用。

其实 .jar 就是一个 压缩包(类似 .zip),里面的结构通常像这样:

1
2
3
4
5
6
7
8
myapp.jar
├── META-INF/
│ └── MANIFEST.MF ← 描述文件,记录入口点(程序从哪里开始)
├── com/
│ └── example/
│ └── MyClass.class
├── config.properties
├── image.png

以如下文件结构为例:

1
2
3
4
5
6
7
project-folder/
├── lib/
│ └── gson-2.10.1.jar
├── src/
│ ├── Main.java --> package src
│ └── models/
│ └── Person.java --> package src.models

创建,运行jar文件

  1. 供别人使用的类(普通的jar)
    1
    jar cf mylib.jar -C out/ .
  • c:create,表示创建一个新的 JAR 文件
  • f:file,表示后面跟的是 JAR 文件名
  • mylib.jar:要创建的目标 JAR 文件名
  • -C out/ .:表示进入 out/ 目录,并将其中的所有内容(.)打包进 JAR
  1. 可执行 JAR(别人可以运行你的程序)
    创建 MANIFEST.MF 文件:
    1
    2
    Manifest-Version: 1.0
    Main-Class: src.Main
1
2
3
jar cfm yourlib.jar MANIFEST.MF -C out/ .
# 执行jar文件(自动查找 Main-Class 并执行 main() 方法)
java -cp "mylib.jar:lib/gson-2.10.1.jar" src.Main
  1. Maven打包

可以把我的 jar 和所有依赖 合并成一个大 jar 文件

1
mvn clean package

Maven 会自动下载所需的依赖,并将所有文件打包成一个 JAR 文件,通常会生成一个类似 target/yourlib-1.0.0.jar 的文件。

Usage

  • 打包项目成一个文件
  • 作为功能组件被其他 Java 程序引用使用(像 Spring、MyBatis、Lombok 都是以 .jar 的形式分发的)
  • .jar 文件可以直接部署到服务器上运行

Java基础 - Java 编译,打包,运行
https://thiefcat.github.io/2025/07/09/JAVA/java-cli/
Author
小贼猫
Posted on
July 9, 2025
Licensed under