当前位置:首页 > Linux > 正文

Linux打jar包详细步骤教程

使用 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命令(适合简单项目)

适用场景:手动打包无需依赖的独立应用。
步骤

  1. 编译源代码
    javac -d ./classes src/*.java  # 将.java文件编译到classes目录
  2. 创建JAR包
    jar cvf myapp.jar -C classes .  # 打包classes目录所有文件
    • c:创建新JAR
    • v:显示详细过程
    • f:指定文件名
  3. 指定主类(可选)
    编辑MANIFEST.MF文件:

    Main-Class: com.example.Main  # 完整类名,末尾回车换行

    打包时引用清单文件:

    Linux打jar包详细步骤教程  第1张

    jar cvfm myapp.jar MANIFEST.MF -C classes .

验证运行

java -jar myapp.jar

使用Apache Maven(自动化依赖管理)

适用场景:标准项目管理,自动处理依赖和构建流程。

  1. 配置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>
  2. 执行打包
    mvn clean package  # 清理并打包到target目录

    生成的JAR位于:target/<project-name>-<version>.jar


使用Gradle(灵活构建工具)

适用场景:复杂项目,需高度自定义构建流程。

  1. 配置build.gradle
    plugins {
      id 'java'
    }  
    jar {
      manifest {
        attributes 'Main-Class': 'com.example.Main'
      }
    }
  2. 执行构建
    gradle jar  # 生成JAR到build/libs目录

创建可执行JAR(包含所有依赖)

通过Maven生成包含依赖的”Fat JAR”:

  1. 添加maven-assembly-pluginpom.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>
  2. 打包命令:
    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标准规范。

0