1. 编译 Java 文件(指定依赖 JAR)
javac -encoding UTF-8 \
-cp "D:\project\xxx\字符串加解密jar包\lib\commons-lang3-3.11.jar" \
-d bin \
src\test\*.java
- -encoding UTF-8: 指定源码编码为 UTF-8,避免中文乱码。
- -cp: 添加 commons-lang3-3.11.jar 到编译类路径。
- -d bin: 将编译后的 .class 文件输出到 bin 目录。
- src\test*.java: 编译 src\test 目录下所有 Java 文件。
2. 解压依赖 JAR(提取类文件)
mkdir "D:\project\xxx\字符串加解密jar包\lib\temp"
cd "D:\project\xxx\字符串加解密jar包\lib\temp"
jar xf "../commons-lang3-3.11.jar"
cd "D:\project\xxx\字符串加解密jar包"
- jar xf: 解压 JAR 文件到当前目录。
- 目的: 将依赖的第三方类文件与项目代码一起打包到最终 JAR 中。
3. 打包生成可执行 JAR(含清单文件)
jar cfm StrUtilsApp.jar lib\manifest.txt \
-C bin . \
-C lib\temp .
- cfm: 创建 JAR + 指定清单文件(manifest.txt)。
- -C bin .: 将 bin 目录下的编译文件添加到 JAR 根。
- -C lib\temp .: 将解压后的依赖类文件添加到 JAR 根。
- 清单文件要求: 需包含 Main-Class: test.Main 指定入口类。
4. 清理临时文件
rmdir /s /q "D:\project\xxx\字符串加解密jar包\lib\temp"
5. 运行 JAR 的两种方式
方式一:直接运行(需正确配置 Main-Class)
java -jar StrUtilsApp.jar
方式二:手动指定类路径
java -cp "StrUtilsApp.jar;lib\commons-lang3-3.11.jar" test.Main
- -cp: 显式指定 JAR 和依赖库的路径。
- 适用场景: 当未在清单文件中设置 Main-Class 时,需手动指定入口类。
目录结构
原始目录结构:
D:\project\xxx\字符串加解密jar包\
├── bin\
├── lib\
│ ├── commons-lang3-3.11.jar
│ └── manifest.txt
├── src\
│ └── test\
│ ├── Main.java
│ └── StrUtils.java
-----------------------------------------------
最后的目录结果:
D:\project\xxx\字符串加解密jar包\
├── bin\
├── lib\
│ ├── commons-lang3-3.11.jar
│ └── manifest.txt
├── src\
│ └── test\
│ ├── Main.java
│ └── StrUtils.java
└── StrUtilsApp.jar
关键注意事项
- 路径中的空格: 包含空格的路径必须用英文引号包裹(如 “D:\project\hrz\字符串加解密jar包”)。
- 依赖版本: 确保所有命令中的 JAR 文件名与实际版本一致(如 3.11)。
- 清单文件: manifest.txt 需放在 lib 目录下,内容需包含 Main-Class: test.Main 和 Class-Path(若有外部依赖)。