1. 前言
将自己的java项目打包导出为windows桌面程序(exe)比较麻烦,我们希望达到的效果是导出的exe文件可以再其他没有java环境的电脑运行。
简单描述打包过程如下:
- IDEA导出项目的jar包;
- exe4j软件( exe4j下载链接 )第一次打包生成依赖java环境的exe可执行文件;
- Inno Setup软件( Inno Setup Downloads )第二次打包生成不依赖环境的安装包。
具体操作步骤见下文。
2. 什么是jar包
在Java开发中,JAR(Java ARchive)包是一种将多个Java类文件及相关资源文件(如图像、配置文件等)打包成一个文件的格式。JAR包的扩展名为.jar
,它是一个压缩文件,类似于ZIP文件,但用于Java程序的分发和执行。
打包成JAR包的过程通常是指将编写好的Java程序(包括源代码文件和其他资源文件)经过编译后,所有的.class
文件和资源文件(如图片、配置文件等)一起打包成一个JAR文件。这种打包方式可以方便地部署、传输和执行Java应用。
JAR包的特点:
- 简化分发:将多个文件压缩为一个JAR文件,便于存储和传输。
- 包含元数据:JAR文件可以包含一个
META-INF
目录,其中存储一些描述文件,如MANIFEST.MF
文件,记录关于JAR包的元数据(如版本信息、依赖关系等)。 - 可执行JAR文件:如果JAR文件中包含一个指定的入口类(含有
main
方法),可以将其作为一个可执行的JAR文件(.jar)。这样,你可以通过命令行运行JAR文件:
java -jar myprogram.jar
这个命令会启动JAR文件中的main
。
例如我在测试IDEA打包的jar能否正常运行:
为什么要打包成JAR:
- 方便管理和部署:将所有Java类、资源文件打包在一个文件中,便于管理、分发和部署。
- 提高效率:减少了分发时需要传输的文件数量,并且JAR文件经过压缩,可以减少文件的体积。
- 便于执行:通过打包成JAR文件,可以使Java程序像其他应用一样便于执行,尤其是在没有IDE的环境下。
3. IDAE将Java程序打成jar包
具体步骤:
- 打开项目,点击file -> Project Structure -> Artifacts;
- 点击添加jar文件
- 回到主界面,点击 Build -> Build Artifacts,在output中生成jar文件。
细节如下:
- 打的包一般会出现在根目录下面的out文件夹下面。 当然你也可以用maven的package功能打包,效果是一样的。
4. exe4j将jar打包成exe文件
exe4j 是一个专门为 Java 应用程序开发的工具,用于将 Java 程序打包成独立的可执行文件(.exe
)。它可以帮助开发者创建适合 Windows 平台的可执行文件,让最终用户无需直接接触 Java 的运行环境(如 .jar
文件或命令行工具)。
exe4j将jar打包成exe文件具体步骤:
- 下载exej4软件;
- 选择JAR in EXE 模式;
- 配置好打包的exe输出路径和程序图标;
- 选择jar包路径和程序入口文件,这一步有很多细节需要注意,如果这里发现无法选择程序入口文件,说明导出的jar包有问题;
- 配置jar信息,例如版本,并且删除原有的java环境配置, 同时需要把你本地的jre复制出来,把它和jar包放在同一个文件夹(不强求,就为了方便),以方便打包
- 打包完成。
细节如下:
-
使用工具exe4j
下载地址:https://www.ej-technologies.com/download/exe4j/files -
exe4j 破解码:随便选一个
A-XVK258563F-1p4lv7mg7sav
A-XVK209982F-1y0i3h4ywx2h1
A-XVK267351F-dpurrhnyarva
A-XVK204432F-1kkoilo1jy2h3r
A-XVK246130F-1l7msieqiwqnq
A-XVK249554F-pllh351kcke50
-
-
-
-
-
-
-
-
注意:这里exe4j中选择Main class如果找不到程序入口,大概率是jar包导出有问题。
-
-
-
**为什么要删掉这些?**因为我们的exe文件是需要给没Java环境的人使用的,如果不去更改这里的环境指向,打包成的exe在自己又Java环境的电脑上能用,在没有的Java环境的电脑上会报错 所以你需要把你本地的jre复制出来,把它和jar包放在同一个文件夹(不强求,就为了方便),以方便打包 如何寻找和产生java环境的jre,请参考 jdk没有jre的解决方法_新版jdk没有jre-CSDN博客
-
-
后面的一直下一步就行了
-
到这里,你把这个exe再加上你的jre文件夹发给人家,别人就可以在无Java环境下打开这个exe文件了(中间的jar包可以删除)
5. Inno Setup加壳改造成安装包
这样子的exe文件很笨重,并且需要和jre在同一个文件夹下才能运行,可以用Inno Setup 6对其进行再次包装,包装完只要发给这个文件的exe安装包给别人就可以使用。
Inno Setup 是一个免费的 Windows 应用程序安装包制作工具,主要用于创建可执行的安装程序(通常以 .exe
格式分发)。它提供了强大的功能,可以轻松地将一个软件项目打包成一个安装程序,供用户安装和配置软件。
Inno Setup 的特点
- 免费且开源:
- Inno Setup 是一个免费的工具,可供商业和个人使用,并且源码可用(使用基于 Pascal 的脚本语言)。
- 支持多种功能:
- 安装文件和文件夹:支持复制文件、创建文件夹、配置快捷方式等操作。
- 支持卸载程序:生成的安装程序通常附带一个对应的卸载程序,用户可以轻松移除软件。
- 多语言支持:支持多语言安装界面。
- 支持压缩:能够对文件进行高效压缩,减少安装包的大小。
- 可配置:支持复杂的安装逻辑和条件,比如组件选择、路径设置等。
- 用户友好:
- 提供向导模式,初学者可以轻松创建一个简单的安装包。
- 允许高级用户通过脚本来自定义安装过程。
- 跨平台兼容性:
- 可以生成适用于几乎所有现代 Windows 系统(Windows 7/8/10/11)的安装程序。
- 丰富的定制性:
- 支持通过编程逻辑来实现动态安装,例如读取注册表信息、修改系统设置等。
Inno Setup加壳改造成安装包具体步骤:
- 根据向导模式生成编译的脚本;
- 修改脚本配置,使其适配java项目的打包
- 找到下图的这个地方,把{app}改成{app}\jre
- 添加
[Dirs] Name: {app}; Permissions: users-full
** ,使得打包的程序的安装目录拥有完全控制的权限,因为如果默认安装在c盘,新建和删除文件都需要管理员权限**
- 找到下图的这个地方,把{app}改成{app}\jre
- 运行脚本,生成安装包。
具体细节:
-
下载Inno Setup
下载地址:https://jrsoftware.org/isinfo.php -
安装一直点next就行了
-
-
-
-
-
以下全部点next,不过这个版本说明可以写一些
-
坑的地方来了,这里你先别点是
**找到下图的这个地方,把{app}改成{app}\jre**
添加[Dirs] Name: {app}; Permissions: users-full
** ,使得打包的程序的安装目录拥有完全控制的权限,因为如果默认安装在c盘,新建和删除文件都需要管理员权限**
- 然后保存脚本,运行脚本
- 编译完之后,会在你指定的地方生成一个安装包,这个就是加壳后生成的exe安装文件。

- 打开你的安装包,安装生成的软件,一直next就行了
本文参考以下博客: