在Java开发中,将编写好的程序生成可执行的JAR文件是项目部署的重要环节,JAR(Java Archive)文件能将.class文件、资源文件、配置文件等打包成一个独立的单元,便于分发和运行,本文将详细介绍在Java中生成JAR文件的完整流程,包括手动方式、构建工具辅助方式以及常见问题的解决方法。

手动生成JAR文件:使用jar命令
对于小型项目或简单的程序,可以通过JDK自带的jar命令手动生成JAR文件,首先需要确保程序已正确编译,所有.class文件位于指定目录(如bin目录),且资源文件(如配置文件、图片等)已妥善放置。
生成JAR文件的基本步骤如下:
-
创建清单文件:在项目根目录下创建
META-INF文件夹,并在其中添加MANIFEST.MF文件,该文件需指定主类(即程序入口点),Manifest-Version: 1.0 Main-Class: com.example.Main注意:
Main-Class的值需包含完整的包名,且末尾无需.class后缀。 -
执行打包命令:打开命令行,进入项目根目录,执行以下命令:
jar cvfm MyProgram.jar META-INF/MANIFEST.MF -C bin/ .参数说明:

c:创建新的JAR文件;v:生成详细输出;f:指定JAR文件名;m:包含清单文件;-C bin/ .:切换到bin目录并添加所有文件。
-
验证JAR文件:运行
jar tf MyProgram.jar可查看JAR内容,或通过java -jar MyProgram.jar直接执行程序。
使用构建工具自动化生成JAR文件
对于复杂项目,手动打包效率低且易出错,推荐使用Maven或Gradle等构建工具。
Maven方式
在pom.xml中添加以下配置:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.2.0</version>
<configuration>
<archive>
<manifest>
<mainClass>com.example.Main</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
</plugins>
</build>
执行mvn clean package命令后,JAR文件将生成在target目录下。
Gradle方式
在build.gradle中添加:
jar {
manifest {
attributes 'Main-Class': 'com.example.Main'
}
}
执行gradle build命令,JAR文件位于build/libs目录。

依赖管理与可执行JAR
若程序依赖第三方库,需将依赖一并打包,Maven可通过maven-assembly-plugin或maven-shade-plugin生成包含依赖的“胖JAR”(Fat JAR)。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>3.2.4</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
</execution>
</executions>
</plugin>
Gradle则可通过shadow插件实现类似功能。
常见问题与解决方案
- “主类未找到”错误:检查
MANIFEST.MF中的Main-Class是否正确,确保包名与类名匹配。 - 资源文件加载失败:在构建工具中配置资源目录,例如Maven的
<resources>标签。 - 依赖冲突:使用
mvn dependency:tree或gradle dependencies分析依赖关系,排除冲突版本。
通过以上方法,无论是简单的控制台应用还是复杂的企业级项目,均可高效生成可执行的JAR文件,实现程序的标准化部署。
















