杰瑞科技汇

Java Eclipse如何打包成可执行文件?

使用 Maven (最推荐)

Maven 是目前 Java 项目管理的事实标准,如果你的项目已经配置了 Maven,打包会非常简单。

Java Eclipse如何打包成可执行文件?-图1
(图片来源网络,侵删)

前提条件

  1. 已安装 Maven:确保你的系统上已经安装了 Maven,并且环境变量 PATH 中配置了 Maven 的 bin 目录。
  2. Eclipse 中有 Maven 插件:现代的 Eclipse IDE for Enterprise Java and Web Developers (或简称 Eclipse IDE) 通常已经内置了 Maven 插件,如果没有,可以通过 Help -> Eclipse Marketplace 搜索 "m2e" 并安装。

操作步骤

第 1 步:配置 pom.xml 文件

pom.xml (Project Object Model) 是 Maven 项目的核心配置文件,你需要确保它包含了正确的打包信息。

  1. 在 Eclipse 的 Project Explorer 中,找到并打开你项目的 pom.xml 文件。

  2. 设置打包类型:在 <project> 标签内,找到 <packaging> 标签,根据你的项目类型,设置其值。

    Java Eclipse如何打包成可执行文件?-图2
    (图片来源网络,侵删)
    • 可执行 JAR (包含所有依赖)<packaging>jar</packaging>
    • Web 应用 (WAR 包)<packaging>war</packaging>
    • 库 (给别人用的 JAR)<packaging>jar</packaging> (通常不需要特殊配置)
  3. 配置主类 (Main Class):为了让生成的 JAR 文件可以直接通过 java -jar 运行,你需要指定主类的入口,在 pom.xml 中添加以下插件配置:

    <build>
        <plugins>
            <!-- 这个插件用于将项目及其依赖打包成一个可执行的 "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>
                        <configuration>
                            <transformers>
                                <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                                    <!-- 在这里指定你的主类的全限定名 -->
                                    <mainClass>com.example.myapp.Main</mainClass>
                                </transformer>
                            </transformers>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
    • 注意:请将 <mainClass>com.example.myapp.Main</mainClass> 替换成你自己项目的主类全限定名(package.ClassName)。

第 2 步:执行打包命令

  1. 在 Eclipse 的 Project Explorer 中,右键点击你的项目
  2. 选择 Run As -> Maven build...
  3. 在弹出的 "Edit Configuration" 窗口中:
    • Goals 字段中输入:clean package
      • clean:会先清理之前的编译和打包文件,确保一个干净的环境。
      • package:执行打包操作。
    • 点击 Run 按钮,Eclipse 底部的 Console 窗口会显示 Maven 的执行过程。

第 3 步:找到生成的 JAR 文件

打包成功后,你可以在项目的目录下找到生成的 JAR 文件。 路径通常是:your-project-name/target/your-project-name-1.0-SNAPSHOT.jar

  • your-project-name-1.0-SNAPSHOT.jar:这就是一个包含所有依赖的 "Fat JAR" 或 "Uber JAR",可以直接运行。
  • 你还会看到另一个文件 your-project-name-1.0-SNAPSHOT.jar.original,这是 Maven Shade 插件在修改之前的原始 JAR。

使用 Gradle

Gradle 是另一种非常流行的构建工具,其语法更现代化,配置更灵活。

前提条件

  1. 已安装 Gradle:确保系统上安装了 Gradle,并配置了环境变量。
  2. Eclipse 中有 Gradle 插件:通过 Help -> Eclipse Marketplace 搜索 "Buildship" 并安装。

操作步骤

第 1 步:配置 build.gradle 文件

  1. 在 Project Explorer 中,找到并打开 build.gradle 文件。

  2. 应用 Java 插件:确保文件开头有 apply plugin: 'java'

  3. 配置 JAR 任务:在 build.gradle 文件中添加或修改 jar 任务,以创建一个可执行的 "Fat JAR",通常我们会使用 shadow 插件。

    // 应用 Java 插件
    apply plugin: 'java'
    // 应用 Shadow JAR 插件 (需要先在 buildscript 中添加仓库和依赖)
    apply plugin: 'com.github.johnrengelman.shadow'
    // 设置 Java 版本
    sourceCompatibility = '1.8'
    targetCompatibility = '1.8'
    // 仓库配置
    repositories {
        mavenCentral()
    }
    // 依赖配置
    dependencies {
        //  implementation 'org.slf4j:slf4j-api:1.7.30'
    }
    // Shadow JAR 任务配置
    shadowJar {
        archiveBaseName.set('my-app') // 设置输出 JAR 的基本名称
        archiveVersion.set('1.0')     // 设置版本号
        manifest {
            attributes 'Main-Class': 'com.example.myapp.Main' // 指定主类
        }
        mergeServiceFiles() // 合并服务文件 (如果需要)
    }
    • 同样,请替换 Main-Class 的值为你的主类全限定名。
    • shadow 插件需要先配置,你可以在 buildscript 块中添加 id 'com.github.johnrengelman.shadow' version '7.1.2' apply false

第 2 步:执行打包命令

  1. 右键点击项目
  2. 选择 Run As -> Gradle Build
  3. 在 "Gradle Tasks" 视图中:
    • 展开项目,找到 build 组下的 shadowJar 任务。
    • 双击 shadowJar 执行。
    • 或者,在 "Common Tasks" 标签页中直接点击 build

第 3 步:找到生成的 JAR 文件

生成的 "Fat JAR" 通常位于 build/libs/ 目录下,文件名类似 my-app-1.0.jar


手动打包 (不推荐,仅适用于简单项目)

对于非常小的、没有外部依赖的纯 Java 项目,可以手动打包。这种方法在有依赖时会变得非常繁琐且容易出错,不推荐在生产环境中使用

操作步骤

第 1 步:编译项目

  1. 右键点击项目
  2. 选择 Build Path -> Configure Build Path...
  3. 在 "Libraries" 标签页,确保所有依赖的 JAR 文件都在 "Referenced Libraries" 中。
  4. 点击 Apply and Close
  5. 右键点击项目,选择 Build Project,Eclipse 会将 .java 文件编译成 .class 文件,存放在 bin 目录下。

第 2 步:创建 JAR 文件

  1. 右键点击项目,选择 Export...
  2. 在弹出的窗口中,展开 Java 文件夹,选择 JAR file,然后点击 Next
  3. Export destination:选择你想要保存 JAR 文件的位置和文件名(C:\temp\my-app.jar)。
  4. Select the resources to export
    • 勾选你的项目文件夹。
    • 非常重要:展开你的项目,勾选 bin 文件夹(包含编译后的 .class 文件)。
    • 如果你的项目有资源文件(如 .properties, .xml, 图片等),也请勾选它们所在的文件夹。
  5. JAR Manifest specification
    • 选择 Generate the manifest file
    • 点击 Browse...,选择你的项目根目录下的 META-INF 文件夹(如果没有,需要手动创建)。
    • 关键一步:在 META-INF 文件夹下创建一个名为 MANIFEST.MF 的文本文件,内容如下:
      Manifest-Version: 1.0
      Main-Class: com.example.myapp.Main
      • 请务必将 Main-Class 的值替换成你自己的主类全限定名。
      • 注意:冒号后面有一个空格!
  6. 点击 Finish

第 3 步:处理依赖

这是手动打包最麻烦的一步!

  • 无依赖:如果你的项目没有任何外部依赖(JAR 文件),那么上一步生成的 JAR 文件就可以直接运行。
  • 有依赖:你需要将所有依赖的 JAR 文件解压,然后将里面的所有 .class 文件和你自己项目的 .class 文件一起打包进新的 JAR,这个过程非常复杂,极易出错,这就是为什么强烈推荐使用 Maven 或 Gradle 的原因。

总结与对比

特性 Maven Gradle 手动打包
易用性 中等,需要学习 pom.xml 高,使用 Groovy/Kotlin DSL,更灵活 低,繁琐且易错
依赖管理 强大,中央仓库 非常强大,灵活的仓库配置 无需管理,但需手动处理
打包方式 标准化,插件丰富(如 shade 灵活,插件丰富(如 shadow 原始,功能有限
可重复性 非常高 非常高 低,容易因环境不同而出错
推荐度 ⭐⭐⭐⭐⭐ (行业标准) ⭐⭐⭐⭐⭐ (现代选择) ⭐ (仅用于教学或极简项目)

最终建议:

对于任何严肃的 Java 项目,请务必使用 MavenGradle,它们能为你节省大量时间,并确保构建过程的稳定和可重复性,如果你是新手,从 Maven 开始学习是一个不错的选择

分享:
扫描分享到社交APP
上一篇
下一篇