当前位置: 代码网 > it编程>编程语言>Java > 将Java项目打包为可执行JAR 文件的四种方法

将Java项目打包为可执行JAR 文件的四种方法

2025年08月18日 Java 我要评论
我将详细介绍将 java 项目打包为可执行 jar 文件的完整流程,包括使用 ide 和命令行两种方法。方法一:使用 intellij idea 打包步骤 1:配置项目结构打开项目点击 file &g

我将详细介绍将 java 项目打包为可执行 jar 文件的完整流程,包括使用 ide 和命令行两种方法。

方法一:使用 intellij idea 打包

步骤 1:配置项目结构

  • 打开项目
  • 点击 file > project structure
  • 在 project settings 中选择 artifacts
  • 点击 + 号 > jar > from modules with dependencies

步骤 2:配置主类

  • 在 "main class" 字段选择主类:例如:com.example.demo.desktopfilesearch
  • 确保选择 "extract to the target jar" 选项
  • 点击 ok

步骤 3:构建 jar 文件

  • 点击 build > build artifacts
  • 选择您的 artifact > build
  • 生成的 jar 文件将位于 out/artifacts/ 目录下

方法二:使用 maven 打包

步骤 1:添加 maven 插件

在 pom.xml 中添加以下插件配置:

<build>
    <plugins>
        <!-- 编译插件 -->
        <plugin>
            <groupid>org.apache.maven.plugins</groupid>
            <artifactid>maven-compiler-plugin</artifactid>
            <version>3.8.1</version>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
            </configuration>
        </plugin>
        
        <!-- 创建可执行 jar 的插件 -->
        <plugin>
            <groupid>org.apache.maven.plugins</groupid>
            <artifactid>maven-jar-plugin</artifactid>
            <version>3.2.0</version>
            <configuration>
                <archive>
                    <manifest>
                        <addclasspath>true</addclasspath>
                        <mainclass>com.example.demo.desktopfilesearch</mainclass>
                    </manifest>
                </archive>
            </configuration>
        </plugin>
        
        <!-- 包含依赖的插件(可选) -->
        <plugin>
            <groupid>org.apache.maven.plugins</groupid>
            <artifactid>maven-assembly-plugin</artifactid>
            <version>3.3.0</version>
            <configuration>
                <archive>
                    <manifest>
                        <mainclass>com.example.demo.desktopfilesearch</mainclass>
                    </manifest>
                </archive>
                <descriptorrefs>
                    <descriptorref>jar-with-dependencies</descriptorref>
                </descriptorrefs>
            </configuration>
            <executions>
                <execution>
                    <id>make-assembly</id>
                    <phase>package</phase>
                    <goals>
                        <goal>single</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

步骤 2:执行打包命令

在项目根目录(包含 pom.xml 的目录)打开命令行,执行:

mvn clean package

步骤 3:获取 jar 文件

  • 生成的 jar 文件位于 target/ 目录
  • 如果使用了 assembly 插件,会生成两个文件:
    • your-project-name.jar - 不含依赖
    • your-project-name-jar-with-dependencies.jar - 包含所有依赖

方法三:使用 gradle 打包

步骤 1:配置 build.gradle

在 build.gradle 文件中添加:

plugins {
    id 'java'
    id 'application'
}

application {
    mainclassname = 'com.example.demo.desktopfilesearch'
}

jar {
    manifest {
        attributes 'main-class': 'com.example.demo.desktopfilesearch'
    }
    
    // 包含所有依赖(可选)
    from {
        configurations.runtimeclasspath.collect { it.isdirectory() ? it : ziptree(it) }
    }
}

步骤 2:执行打包命令

在项目根目录执行:

gradle clean build

步骤 3:获取 jar 文件

生成的 jar 文件位于 build/libs/ 目录

方法四:手动创建 jar(不使用构建工具)

步骤 1:编译 java 文件

javac -d target/classes src/main/java/com/example/demo/*.java

步骤 2:创建清单文件

创建 meta-inf/manifest.mf 文件:

manifest-version: 1.0
main-class: com.example.demo.desktopfilesearch
class-path: .

步骤 3:打包为 jar

jar cfm target/your-app.jar meta-inf/manifest.mf -c target/classes .

测试 jar 文件

运行 jar 文件以确保正确打包:

java -jar your-app.jar

常见问题解决

问题:运行 jar 时出现 "no main manifest attribute"

解决方案

  • 确保 manifest.mf 文件包含正确的 main-class 属性
  • 使用 jar tf your-app.jar 检查清单文件是否正确包含
  • 如果使用 maven/gradle,确保插件配置正确

问题:缺少依赖项

解决方案

  1. 使用包含依赖的打包方式(如 maven-assembly-plugin)

  2. 将所有依赖 jar 放在同一目录,使用 -cp 指定类路径:

    java -cp "your-app.jar:libs/*" com.example.demo.desktopfilesearch

问题:资源文件未包含

解决方案

  1. 确保资源文件位于正确位置(如 src/main/resources)

  2. 在构建配置中包含资源目录:

    java -cp "your-app.jar:libs/*" com.example.demo.desktopfilesearch

最佳实践

版本控制:在 jar 文件名中包含版本号

依赖管理

  • 对于简单项目,使用包含依赖的单一 jar
  • 对于大型项目,使用 lib 目录存放依赖

签名验证:使用 jarsigner 对 jar 进行签名

jarsigner -keystore mykeystore.jks -storepass password -keypass password your-app.jar mykey

瘦身打包:使用 proguard 或其它工具减小 jar 大小

跨平台测试:在不同操作系统上测试 jar 文件

总结打包 java 应用程序为 jar 文件是分发和部署的关键步骤。选择适合您项目的打包方法:

  • 简单项目:使用 ide 内置的导出功能
  • 标准项目:使用 maven 或 gradle 构建
  • 需要依赖管理:使用包含依赖的打包方式
  • 特殊需求:手动创建 jar 文件

完成 jar 打包后,您可以进一步使用 launch4j 或 jpackage 工具将其转换为 exe 文件,创建完整的 windows 安装程序。

到此这篇关于将java项目打包为可执行jar 文件的文章就介绍到这了,更多相关java打包jar命令内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

  • Java IO流总结

    基础流1、io概述1.1 什么是io数据的传输可以看做是一种数据的流动,按照流动的方向,以内存为基准,分为输入input 和输出output ,即流向内存是输入流,流出内存的输出流…

    2025年08月19日 编程语言
  • 3步教你彻底销毁Java中的敏感数据

    3步教你彻底销毁Java中的敏感数据

    在java开发中,敏感数据(如用户密码、身份证号、银行卡号)若未及时销毁,可能引发以下风险:内存泄露:数据长期驻留内存,占用大量资源甚至导致oom(out of... [阅读全文]
  • Java中Stream流的使用示例详解

    在 java 中,stream 流是 java 8 引入的一个强大特性,它允许你以声明式的方式处理集合数据。stream 流提供了一种高效且易于使用的方式来对数据进行过滤、映射、排…

    2025年08月19日 编程语言
  • 深入详解SpringBoot中时区问题解决与配置方案

    深入详解SpringBoot中时区问题解决与配置方案

    在日常开发中,时区问题常常像潜伏的地雷,平时看似没事,一旦跨地区、跨服务器或跨系统部署,就可能出现日志错乱、数据库时间偏移、定时任务不准等问题。作为程序员,你必... [阅读全文]
  • SpringBoot实现事务钩子函数的示例

    一、案例背景拿支付系统相关的业务来举例。在支付系统中,我们需要记录每个账户的资金流水(记录用户a因为哪个操作扣了钱,因为哪个操作加了钱),这样我们才能对每个账户的账做到心中有数,对…

    2025年08月19日 编程语言
  • 使用Java实现二维码生成与扫码验证功能

    使用Java实现二维码生成与扫码验证功能

    在现代软件开发中,二维码被广泛应用于各种场景,例如支付、预约、身份验证等。本篇文章将以 java 为例,介绍如何实现二维码的生成以及扫码验证的功能。项目依赖在项... [阅读全文]

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com