上一篇
Linux打jar包详细步骤教程
- Linux
- 2025-06-07
- 4994
使用
javac
编译Java文件后,通过
jar cvfe 包名.jar 主类名 编译后的class文件
命令打包。,“
bash,javac -d . src/*.java,jar cvfe myapp.jar com.example.Main com/example/*.class,
“
如何为Java应用创建JAR包:详细指南
在Linux环境中打包Java应用的JAR文件是部署和分发项目的核心步骤,以下是四种主流方法,涵盖从基础命令到自动化构建工具,每一步均附带操作命令和原理说明。
使用JDK自带jar
命令(适合简单项目)
适用场景:手动打包无需依赖的独立应用。
步骤:
- 编译源代码:
javac -d ./classes src/*.java # 将.java文件编译到classes目录
- 创建JAR包:
jar cvf myapp.jar -C classes . # 打包classes目录所有文件
c
:创建新JARv
:显示详细过程f
:指定文件名
- 指定主类(可选):
编辑MANIFEST.MF
文件:Main-Class: com.example.Main # 完整类名,末尾回车换行
打包时引用清单文件:
jar cvfm myapp.jar MANIFEST.MF -C classes .
验证运行:
java -jar myapp.jar
使用Apache Maven(自动化依赖管理)
适用场景:标准项目管理,自动处理依赖和构建流程。
- 配置
pom.xml
:<project> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <version>3.3.0</version> <configuration> <archive> <manifest> <mainClass>com.example.Main</mainClass> <!-- 指定主类 --> </manifest> </archive> </configuration> </plugin> </plugins> </build> </project>
- 执行打包:
mvn clean package # 清理并打包到target目录
生成的JAR位于:
target/<project-name>-<version>.jar
使用Gradle(灵活构建工具)
适用场景:复杂项目,需高度自定义构建流程。
- 配置
build.gradle
:plugins { id 'java' } jar { manifest { attributes 'Main-Class': 'com.example.Main' } }
- 执行构建:
gradle jar # 生成JAR到build/libs目录
创建可执行JAR(包含所有依赖)
通过Maven生成包含依赖的”Fat JAR”:
- 添加
maven-assembly-plugin
到pom.xml
:<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-assembly-plugin</artifactId> <version>3.6.0</version> <configuration> <descriptorRefs> <descriptorRef>jar-with-dependencies</descriptorRef> </descriptorRefs> <archive> <manifest> <mainClass>com.example.Main</mainClass> </manifest> </archive> </configuration> <executions> <execution> <phase>package</phase> <goals> <goal>single</goal> </goals> </execution> </executions> </plugin>
- 打包命令:
mvn clean package # 生成*-jar-with-dependencies.jar
常见问题解决
- 错误:
no main manifest attribute
原因:未指定主类。
解决:检查MANIFEST.MF
或构建配置中的Main-Class
路径。 - 依赖缺失
解决:使用Maven/Gradle的Fat JAR打包或手动添加依赖到-classpath
。
方法 | 优势 | 推荐场景 |
---|---|---|
jar 命令 |
无需额外工具 | 简单无依赖项目 |
Maven | 自动依赖管理 | 标准Java项目 |
Gradle | 构建脚本灵活 | 复杂多模块项目 |
Fat JAR | 包含所有依赖 | 独立分发应用 |
通过正确选择工具,您可高效生成JAR包并确保跨环境稳定运行,对于大型项目,优先推荐Maven/Gradle以保障构建流程的标准化和可维护性。
引用说明: 参考了Oracle官方JAR文档、Apache Maven官方指南及Gradle用户手册,结合实践经验验证了操作步骤的准确性,技术细节遵循Java SE标准规范。