一、使用 exe4j 打包 Java 项目

exe4j 的官方网站是 https://www.ej-technologies.com/products/exe4j/overview.html。

准备 Java 项目 确保 Java 项目已编译为可执行的 JAR 文件,并确认所有依赖项(如第三方库)已正确包含在 JAR 中或位于同一目录下。

下载并安装 exe4j 从 exe4j 官网下载并安装 exe4j,安装完成后启动 exe4j 向导。

配置 exe4j 在 exe4j 向导中选择“JAR in EXE”模式,填写应用程序名称和输出目录。指定主类路径和 JAR 文件路径,确保勾选“Allow JAR files to be started directly”选项。

设置 JRE 要求 在“JRE”选项卡中配置最低和最高 JRE 版本,可以勾选“Search sequence”选项以指定 JRE 的搜索路径(如捆绑 JRE 或系统路径)。

生成 EXE 文件 完成配置后,点击“Build”按钮生成 EXE 文件。生成的 EXE 文件将位于指定的输出目录中。

二、使用 Inno Setup Compiler 创建安装程序

访问 Inno Setup 的官方网站可通过以下链接:

https://jrsoftware.org/isinfo.php

准备安装文件 将生成的 EXE 文件、依赖的 JAR 文件、资源文件(如图片、配置文件)以及 JRE(如果需要捆绑)整理到一个目录中。

下载并安装 Inno Setup 从 Inno Setup 官网下载并安装 Inno Setup Compiler,启动后选择“Create a new script file using the Script Wizard”。

配置安装程序信息 在向导中填写应用程序名称、版本、发布者等信息,指定输出安装程序的目录和文件名。

添加文件和目录 在“Application files”页面添加主 EXE 文件、依赖文件及 JRE 目录(如果需捆绑)。在“Application shortcuts”页面配置桌面和开始菜单快捷方式。

设置安装选项 配置安装程序的默认安装目录、是否需要管理员权限、是否添加卸载程序等选项。可以自定义安装界面语言和样式。

编译脚本并生成安装程序 完成向导后保存脚本文件(.iss),点击“Compile”按钮生成安装程序(.exe)。生成的安装程序将位于输出目录中。

注意事项

在 IntelliJ IDEA 中打包 JAR 文件

方法 1:通过 Artifacts 配置打包可执行 JAR

打开项目后,导航至 File > Project Structure > Artifacts。点击 + 按钮,选择 JAR > From modules with dependencies。

在配置界面中,选择主类(包含 main 方法的类),并指定输出目录。勾选 Build on make 选项,确保每次构建时自动生成 JAR。

返回 IDEA 主界面,点击 Build > Build Artifacts,选择刚才创建的 Artifact 并点击 Build。生成的 JAR 文件会出现在配置的输出目录中。

方法 2:使用 Maven 插件打包

对于 Maven 项目,在 pom.xml 中添加 maven-assembly-plugin 或 maven-shade-plugin。以下是配置示例:

<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>3.3.0</version>
<configuration>
<archive>
<manifest>
<mainClass>com.example.Main</mainClass>
</manifest>
</archive>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>

方法 3:使用 Gradle 插件打包

对于 Gradle 项目,在 build.gradle 中添加以下配置:

plugins {
id 'java'
} jar {
manifest {
attributes 'Main-Class': 'com.example.Main'
}
from {
configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) }
}
}

执行 gradle build 后,JAR 文件会生成在 build/libs 目录中,包含所有依赖项。

注意事项

  • 如果项目依赖外部库,确保选择正确的方式(如 jar-with-dependencies)打包。
  • 检查生成的 MANIFEST.MF 文件是否包含正确的 Main-Class 属性。
  • 对于复杂项目,推荐使用构建工具(Maven/Gradle)管理依赖和打包流程。

JRE 捆绑

若目标机器可能没有安装 JRE,建议将 JRE 打包到安装程序中,并在 exe4j 中配置优先使用捆绑的 JRE。

问题1:版本问题,重新下载满足条件的JDK即可

问题2:



需要添加一个Jre的环境变量。检查你的环境变量,有没有添加或者添加是否正确!



依赖管理 确保所有依赖项(如 DLL 文件、本地库)包含在安装包中。

测试安装程序 在多种环境下测试安装程序,确保其兼容性和功能完整性。

Java项目打包成EXE全攻略的更多相关文章

  1. Java项目打包成exe的详细教程

    Java项目打包成exe的详细教程 把Java项目打包成exe共分为以下两步: 1. 利用Eclipse先把Java项目先打成jar包 2. 利用exe4j工具把jar包转成exe 这里以Java项目 ...

  2. 将Java项目打包成exe文件

    第一步:参照我之前的博客:利用IDEA把项目打包成jar包第二步:下载安装exe4j软件第三步:新建文件夹,把jre,exe文件的图标,本项目的jar包以及项目用到的jar包都放到同一目录下[很重要] ...

  3. 从小工到专家 ——读《Java程序员职场全攻略》有感

    从小工到专家 ——读<Java程序员职场全攻略>有感   <Java程序员职场全攻略>是以故事的形式,向读者介绍Java程序员的职场经验.作者牛开复在北京从事软件开发,已经是一 ...

  4. JAVA程序打包成exe文件详细图解

    我们都知道Java可以将二进制程序打包成可执行jar文件,双击这个jar和双击exe效果是一样一样的,但感觉还是不同.其实将java程序打包成exe也需要这个可执行jar文件. 准备: eclipse ...

  5. Java程序打包成exe可执行文件

    前言: 我们都知道Java可以将二进制程序打包成可执行jar文件,双击这个jar和双击exe效果是一样一样的,但感觉还是不同.其实将java程序打包成exe也需要这个可执行jar文件. 准备: ecl ...

  6. JSmooth 将java代码打包成exe

    JSmooth 将java代码打包成exe 前言 java代码写了这么多了,但由于jdk的限制,我只能在jdk电脑上运行项目.所以最近在研究打包exe这个问题,今天终于实现了. JSmooth下载 前 ...

  7. java项目打包成可运行的jar,main方法带参数

    转载 原文地址:http://www.cnblogs.com/neillee/p/6063808.html#commentform 将 java 项目打包成可运行的 jar 包(main 函数带参数) ...

  8. 将Python项目打包成EXE可执行文件(单文件,多文件,包含图片)

    解决 将Python项目打包成EXE可执行文件(单文件,多文件,包含图片) 1.当我们写了一个Python的项目时,特别是一个GUI项目,我们特备希望它能成为一个在Windows系统可执行的EXE文件 ...

  9. Pyton项目打包成exe文件

    Python项目打包成exe文件 1 系统环境 windows版本: Win7 64位 python环境:Anaconda python版本:3.6 64位 pyinstaller版本:3.5 1 安 ...

  10. JAVA程序打包成exe小程序的过程

    编程软件:myeclipse2014 打包exe软件:exe4j 1:在myeclipse2014新建java项目编写程序 2:打包成jar,分两种情况(有无外部依赖包) 无外部依赖包:点击项目--- ...

随机推荐

  1. 大模型VS小模型:论国产数据库运维AI Agent的正确打开方式

    作者:孙鹏,大衍(北京)科技有限公司研发工程师 首先为大家推荐这个 OceanBase 开源负责人老纪的公众号 "老纪的技术唠嗑局",会持续更新和 #数据库.#AI.#技术架构 相 ...

  2. STM32学会要花费多长时间?一个从机械转行老程序员的血泪史

    看到这个问题,我不禁想起了6年前那个拿着机械毕业证却被分配到电子部门的懵逼青年--没错,就是我. 当时坐在工位上,面对着桌上那块STM32F103的开发板,内心是崩溃的.我特么学了四年机械,研究生又搞 ...

  3. C++服务开发环境-万事开头难

    C++服务开发环境-万事开头难 对于开发人员来说,仅仅学习编程语言的语法是不够的,还需要学习这门编程语言对应的构建流程,不然写出来的代码怎么变成程序运行起来呢? 出生较晚的编程语言,如golang.p ...

  4. 大模型应用开发初探 : 手搓一个简易Agent

    大家好,我是Edison. 今天是中秋节前最后一个工作日,加油挺住,马上就放假了! 近期我一直在学习和了解LLM的相关知识,听到大家都在谈论AI Agent,说它是接下来几年大模型应用开发的新范式,那 ...

  5. .net 文件上传

    文件上传(页面端) 1.文件上传必须用post提交 2.必须修改表中提交数据时的组织方式,即enctype="multipart/form-data",数据是以分隔符的方式提交的 ...

  6. java开发超级简单技巧

    JAVA EE Java Platform,Enterprise Edition---java平台企业版 java SE Java Platform,Standard Edition---java平台 ...

  7. vue2使用vue3语法

    Composition API Composition API 将是 Vue 3 的核心功能,它具有许多更改和性能改进. 我们也可以在 Vue 2 中通过 npm 插件@vue/composition ...

  8. create-react-app利用craco配置路径别名、Less

    写的挺好,直接搬过来了,验证过,不是无脑搬运原文 &  参考 1.安装 craco/craco $ yarn add @craco/craco # OR $ npm install @crac ...

  9. Prim 算法求最小生成树

    数据参考 百度经验 博客园 楠楠IT 测试接口 牛客 连通工程 问题背景 求国家建设公路的最小开销 算法思想 首先建立 邻接矩阵 然后 设定最小消耗顶点(就是两个定点之间的权重最小)顶点集合 U 每次 ...

  10. iga 入门之 有限元方法计算机解题概述

    简介 摘自 流体力学数值解法 step 数学准备 建立Ritz-Galerkin积分表达式,选择合适的单元类型和单元基函数,推导和建立单元有限元方程. 数据准备:区域剖分 将求解区域划分成合适的单元网 ...