IDEA+exej4+InnoSetup打包java项目为exe可执行文件

1. 前言

将自己的java项目打包导出为windows桌面程序(exe)比较麻烦,我们希望达到的效果是导出的exe文件可以再其他没有java环境的电脑运行。

简单描述打包过程如下:

  1. IDEA导出项目的jar包;
  2. exe4j软件( exe4j下载链接 )第一次打包生成依赖java环境的exe可执行文件;
  3. Inno Setup软件( Inno Setup Downloads )第二次打包生成不依赖环境的安装包。

具体操作步骤见下文。

2. 什么是jar包

在Java开发中,JAR(Java ARchive)包是一种将多个Java类文件及相关资源文件(如图像、配置文件等)打包成一个文件的格式。JAR包的扩展名为.jar它是一个压缩文件,类似于ZIP文件,但用于Java程序的分发和执行。

打包成JAR包的过程通常是指将编写好的Java程序(包括源代码文件和其他资源文件)经过编译后,所有的.class文件和资源文件(如图片、配置文件等)一起打包成一个JAR文件。这种打包方式可以方便地部署、传输和执行Java应用。

JAR包的特点:

  1. 简化分发:将多个文件压缩为一个JAR文件,便于存储和传输。
  2. 包含元数据:JAR文件可以包含一个META-INF目录,其中存储一些描述文件,如MANIFEST.MF文件,记录关于JAR包的元数据(如版本信息、依赖关系等)。
  3. 可执行JAR文件:如果JAR文件中包含一个指定的入口类(含有main方法),可以将其作为一个可执行的JAR文件(.jar)。这样,你可以通过命令行运行JAR文件:
java -jar myprogram.jar

这个命令会启动JAR文件中的main

例如我在测试IDEA打包的jar能否正常运行:

为什么要打包成JAR:

  1. 方便管理和部署:将所有Java类、资源文件打包在一个文件中,便于管理、分发和部署。
  2. 提高效率:减少了分发时需要传输的文件数量,并且JAR文件经过压缩,可以减少文件的体积。
  3. 便于执行:通过打包成JAR文件,可以使Java程序像其他应用一样便于执行,尤其是在没有IDE的环境下。

3. IDAE将Java程序打成jar包

具体步骤:

  1. 打开项目,点击file -> Project Structure -> Artifacts;
  2. 点击添加jar文件
  3. 回到主界面,点击 Build -> Build Artifacts,在output中生成jar文件。

细节如下:

  1. 打的包一般会出现在根目录下面的out文件夹下面。 当然你也可以用maven的package功能打包,效果是一样的。

4. exe4j将jar打包成exe文件

exe4j 是一个专门为 Java 应用程序开发的工具,用于将 Java 程序打包成独立的可执行文件(.exe)。它可以帮助开发者创建适合 Windows 平台的可执行文件,让最终用户无需直接接触 Java 的运行环境(如 .jar 文件或命令行工具)。

exe4j将jar打包成exe文件具体步骤:

  1. 下载exej4软件;
  2. 选择JAR in EXE 模式;
  3. 配置好打包的exe输出路径和程序图标;
  4. 选择jar包路径和程序入口文件,这一步有很多细节需要注意,如果这里发现无法选择程序入口文件,说明导出的jar包有问题;
  5. 配置jar信息,例如版本,并且删除原有的java环境配置, 同时需要把你本地的jre复制出来,把它和jar包放在同一个文件夹(不强求,就为了方便),以方便打包
  6. 打包完成。

细节如下:

  1. 使用工具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
  1. 注意:这里exe4j中选择Main class如果找不到程序入口,大概率是jar包导出有问题。

  2. **为什么要删掉这些?**因为我们的exe文件是需要给没Java环境的人使用的,如果不去更改这里的环境指向,打包成的exe在自己又Java环境的电脑上能用,在没有的Java环境的电脑上会报错 所以你需要把你本地的jre复制出来,把它和jar包放在同一个文件夹(不强求,就为了方便),以方便打包 如何寻找和产生java环境的jre,请参考 jdk没有jre的解决方法_新版jdk没有jre-CSDN博客

  3. 后面的一直下一步就行了
    在这里插入图片描述
    在这里插入图片描述

  4. 到这里,你把这个exe再加上你的jre文件夹发给人家,别人就可以在无Java环境下打开这个exe文件了(中间的jar包可以删除)
    在这里插入图片描述

5. Inno Setup加壳改造成安装包

这样子的exe文件很笨重,并且需要和jre在同一个文件夹下才能运行,可以用Inno Setup 6对其进行再次包装,包装完只要发给这个文件的exe安装包给别人就可以使用。

Inno Setup 是一个免费的 Windows 应用程序安装包制作工具,主要用于创建可执行的安装程序(通常以 .exe 格式分发)。它提供了强大的功能,可以轻松地将一个软件项目打包成一个安装程序,供用户安装和配置软件。

Inno Setup 的特点

  1. 免费且开源
    • Inno Setup 是一个免费的工具,可供商业和个人使用,并且源码可用(使用基于 Pascal 的脚本语言)。
  2. 支持多种功能
    • 安装文件和文件夹:支持复制文件、创建文件夹、配置快捷方式等操作。
    • 支持卸载程序:生成的安装程序通常附带一个对应的卸载程序,用户可以轻松移除软件。
    • 多语言支持:支持多语言安装界面。
    • 支持压缩:能够对文件进行高效压缩,减少安装包的大小。
    • 可配置:支持复杂的安装逻辑和条件,比如组件选择、路径设置等。
  3. 用户友好
    • 提供向导模式,初学者可以轻松创建一个简单的安装包。
    • 允许高级用户通过脚本来自定义安装过程。
  4. 跨平台兼容性
    • 可以生成适用于几乎所有现代 Windows 系统(Windows 7/8/10/11)的安装程序。
  5. 丰富的定制性
    • 支持通过编程逻辑来实现动态安装,例如读取注册表信息、修改系统设置等。

Inno Setup加壳改造成安装包具体步骤:

  1. 根据向导模式生成编译的脚本;
  2. 修改脚本配置,使其适配java项目的打包
    • 找到下图的这个地方,把{app}改成{app}\jre
    • 添加[Dirs] Name: {app}; Permissions: users-full** ,使得打包的程序的安装目录拥有完全控制的权限,因为如果默认安装在c盘,新建和删除文件都需要管理员权限**
  3. 运行脚本,生成安装包。

具体细节

  1. 下载Inno Setup
    下载地址:https://jrsoftware.org/isinfo.php

  2. 安装一直点next就行了

  3. 以下全部点next,不过这个版本说明可以写一些

  4. 坑的地方来了,这里你先别点是

**找到下图的这个地方,把{app}改成{app}\jre** 

添加[Dirs] Name: {app}; Permissions: users-full** ,使得打包的程序的安装目录拥有完全控制的权限,因为如果默认安装在c盘,新建和删除文件都需要管理员权限**

  1. 然后保存脚本,运行脚本
  2. 编译完之后,会在你指定的地方生成一个安装包,这个就是加壳后生成的exe安装文件。
![1732719866010](https://cdn.nlark.com/yuque/0/2024/png/32597833/1732720624757-a7248bf5-7047-47b9-8299-82862e3b42c2.png)
  1. 打开你的安装包,安装生成的软件,一直next就行了

本文参考以下博客:

  1. 【重点文章】将Java程序打包成exe文件,无Java环境也可以运行(解决各种疑难杂症)_java打包exe-CSDN博客
  2. 使用Inno Setup 制作软件安装包详细教程(与开发语言无关)-CSDN博客
  3. win10系统下inno setup 打包程序因权限不足无法执行问题解决方案_inno 打包文件 ,安装包文件夹权限不足-CSDN博客
  4. jdk没有jre的解决方法_新版jdk没有jre-CSDN博客
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值