利用 exe4j 将 JAR 包制成免安装 JDK 的 EXE 文件

article/2025/9/16 5:57:11

利用 exe4j 将 JAR 包制成免安装 JDK 的 EXE 文件

  • exe4j 的工作原理
  • EXE 制作教程

  将 JAR 包制成能在 Windows 上直接运行的 EXE 文件,是很多 Java 爱好者喜欢做的事情。虽然这不是对 JAR 包的商业用法,不过很多人都希望能学以致用,而不仅仅是为了自己的职业生涯。有鉴于此,本文给出了将 JAR 包制成 EXE 文件的方法。为了避免降低使用该 EXE 文件的门槛,EXE 文件在运行前最好还能免安装 JDK,本文也给出了相应的方法。不过即便如此,在具体使用之前,也有需要了解的事项。笔者在编写这个教程之前,几乎踩遍了所有常见的坑。如果读者不想重蹈覆辙,还是仔细阅读本文。

笔者的运行环境:

  • JDK 11.0.12

  • exe4j 6.0.1

  • Windows 10 教育版

exe4j 的工作原理

  exe4j 这个软件其实很傻瓜,很多人能可以自行制成 EXE,不过他们不清楚如何让这个 EXE 脱离本电脑的 JDK。实际上,exe4j 这个软件所做的工作只是封装 JAR 包并让此 JAR 包链接 JRE。也就是说,此软件并不能免除使用 JRE,并不能将 JDK 也一同封装到 EXE 中,但是它可以指定 EXE 读取 JRE 的方法。一般来说,如果没有在 exe4j 中进行这种指定,则生成的 EXE 将根据本 Windows 操作系统中关于 Java 的环境变量来寻找 JRE。如果进行了这种指定,则生成的 EXE 将根据指定的相对路径来寻找 JRE。也就是说,使用此软件能够完成的是,使一个 Java 程序,原来需要通过 JAR 包才能运行,现在变成只需要一个文件夹中 EXE 文件与 JRE 文件即可运行。此结果看起来不是完全令人满意,但也基本满足广大使用者的要求。

  如果读者想将 JDK 也一同封装到 EXE 中,可以使用在本教程使用的 exe4j 的基础上使用另一款软件:Inno SetupInno Setup 有两项功能:

  1. 当程序的所有文件封装成一个 EXE 文件。

  2. 生成的 EXE 文件同时是一种含软件安装引导界面的安装包。

但是,Inno Setup 只对本来就可以运行的 EXE 有效。因此需要先使用在本教程的方法生成 EXE,然后再使用 Inno Setup 制作软件安装包。

EXE 制作教程

  下面开始真正的教程。

  1. 需要一个可以在 CMD 中单独运行的 JAR 包。在 CMD 中运行 JAR 包的方法是,使用命令:java -jar xxx.jar

    • 为了减少不必要的踩坑,建议不要使用多 JAR 依赖。如果读者手上有关于 Java 程序的多个依赖 JAR 包,建议将其合成一个 JAR 包。合成的方法有很多,可以借助 Java 的操作系统命令,也可以使用构建工具,如 Maven。

      • 如果读者的 Java 程序是基于 Maven 的多模块应用,则将其打成一个 JAR 包的方法,可见笔者的另一篇博客:

        将 Maven 中的多模块项目只打成一个 JAR 包:
        https://blog.csdn.net/wangpaiblog/article/details/119628194?spm=1001.2014.3001.5501

  2. 在安装 exe4j 前,需要先安装 JDK。在笔者编写本教程的时候,exe4j 最高只支持 Java 11。因此如果读者安装的 Java 版本高于 exe4j 的要求,exe4j 的安装将不会成功。

  3. 前面已经讲到,EXE 的运行需要 JRE。如果希望生成的 EXE 能在其它计算机中运行,则需要另行准备 JRE。另外,Java 11 及以上的版本的安装目录中都没有直接的 JRE。对于这种问题,可以从下面的方法中选择其中一种:

    • 将 JDK 当成 JRE 来使用,此时,JDK 目录就是 JRE 的目录。之所以这样可行,是因为 JRE 已经被包含在 JDK 中了,不过缺点是 JDK 目录所占空间很大,笔者可以衡量其中的利弊。

    • 上面的方法会引入多余的依赖,造成软件所占空间过于庞大。可以自行记录自己的项目与依赖的 JDK,然后使用如下命令生成依赖:

      jlink --strip-debug --compress 1 --no-header-files --no-man-pages --output miniJre --add-modules java.base,java.logging,java.naming,java.xml,jdk.sctp,jdk.unsupported,java.desktop
      
    • 生成 JRE 目录。JRE 目录所占大小一般是小于 JDK 目录的,不过这种方法有很多弊端,生成的 JRE 目录如果不是完整的,可能导致如下报错:

      java.lang.NoClassDefFoundError: java/util/logging/LogRecord at org.apache.commons.logging.LogAdapter$JavaUtilAdapter.createLog

      生成 JRE 目录的方法有很多,对于 Java 11,只需要在 Java 的安装目录的目录 bin(如:C:\Program Files\Java\jdk-11.0.12\bin)下输入命令:(如果 CMD 控制台没有管理员权限,需要先获取管理员权限)

      jlink.exe --module-path jmods --add-modules java.desktop --output jre

      此时会生成一个 JRE 目录。完整的 JRE 目录下应该含有目录 bin 等。需要将此 JRE 目录移动至其它地方保存,不要放在 Java 目录下污染环境。exe4j 在安装时会扫描 Java 的目录,此过程生成的 JRE 目录会对 exe4j 形成干扰,导致其安装失败。

  4. 下载 exe4j。网址:https://exe4j.apponic.com/

  5. 安装 exe4j 的过程很简单,这里从略。不过要注意,安装 exe4j 之前要下载合适的 JDK。如果安装的 JDK 版本过低或过高,则 exe4j 将无法启动。

  6. 准备好以下的文件:

    • 本项目的 JAR 包
    • JRE 文件夹。如果把 JDK 目录当成 JRE 目录,则需要拷贝整个 Java 安装目录(如:C:\Program Files\Java\jdk-11.0.12)。Java 的安装目录下一般有目录 bin 等。
    • EXE 图标文件(此文件在制作完 EXE 之后就可以删除,不过建设保留备用)

    【注意】

    • 如果不打算在本教程之后制作含安装引导界面的 EXE 安装包,则只需要将上述的这些文件放入同一个文件夹中。这样做的话,就可以清楚地区分软件的核心程序与通用的 JRE。
    • 如果打算在本教程之后制作 含安装引导界面的 EXE 安装包,则需要将 本项目的 JAR 包 放入 JRE 文件夹。实际上,建议将所有的除 JRE 的文件全放入 JRE 文件夹`中。

  7. 打开 exe4j,填写密钥。笔者已经事先有了密钥,并保存在了本地文件夹。输入密钥之后就可以使用该软件的后续功能了。


    在这里插入图片描述

    在这里插入图片描述

  8. 选择将 JAR 包制成 EXE 模式。


    在这里插入图片描述

  9. 设置应用名与 EXE 的存放地址等信息。注意:请记住此 EXE 输出地址,此地址将成为基地址。后面的 JRE 目录等的地址,如果使用的是相对路径,将使用该地址作为基地址。


    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

  10. 此处很关键,关系到生成的 EXE 能不能脱离本操作系统。

    • 如果需要生成的 EXE 在其它计算机上可运行,则此处可以直接点击 Next。此时,生成的 EXE 会根据本操作系统的环境变量来寻找 JRE。如果以后更改了相应的环境变量,则此 EXE 文件那时可能会运行失败。

      在这里插入图片描述

    • 如果希望生成的 EXE 能在其它计算机中运行,则需要进行如下操作。

      在这里插入图片描述
      在这里插入图片描述


      【踩坑提醒】

      • 如果希望生成的 EXE 支持自由复制,则此处的路径要使用相对路径。这就是前面为什么要将相关文件放一起。

  11. 按下图所示操作即可。


    在这里插入图片描述


    在这里插入图片描述

  12. 如果点击上面的按钮,应用可以顺序运行,说明前面的操作都已完整按笔者所指示的进行。此时,前面设置的 EXE 输出目录应该有了相应的 EXE 文件。

    • 如果读者前面没有选择自定义 JRE 目录,则此 EXE 输出目录下的除 EXE 文件都可以删去。

    • 如果读者前面选择的是自定义 JRE 目录,则只需保留的是 EXE 文件以及文件夹 JRE,且文件夹 JRE 与 EXE 文件的相对位置不能移动(也就是说,需要且只需要将文件夹 JRE 与 EXE 文件放在同一个文件夹下即可)。除此之外,此 EXE 输出目录下的其它文件均可删去。

  13. 最后,建议运行此 EXE 来检验一下本次生成 EXE 是否成功。

  14. 之后,如果想制作 含安装引导界面的 EXE 安装包,可以使用另一款软件:Inno Setup


http://chatgpt.dhexx.cn/article/2rhGNONN.shtml

相关文章

EJ.Technologies.Exe4j 8.0-key

exe4j 是一个 Windows 启动器生成器,在您购买 install4j 时免费提供。如果您想在没有安装程序的情况下创建 Java 启动器,exe4j 很有用。exe4j 是一个简单易用的软件应用程序,它允许程序员快速创建 EXE 格式的 Java 应用程序并将它们集成到 Wi…

exe4j 压缩java代码到无JRE环境的电脑上运行

exe4j_6.0下载(x86\x64\注册机): https://pan.baidu.com/s/1oFzif5ZVswbgbBkKHc8HFQ 打包步骤: 再次偷一下懒,使用别人的内容,原文:https://blog.csdn.net/qq_20473985/article/details/531862…

exe4j 关闭命令行窗口运行

exe4j 运行关闭命令行窗口 java 程序打包成 jarexe4j 将jar转为 exe 文件exe4j 关闭未注册弹窗信息exe4j 设置UI启动,关闭黑框 使用 java swing 做个小软件,为了使用方便,使用 exe4j 将 jar 包转成了 exe 文件,可以直接双击运行&a…

使用exe4j打包exe文件

如何使用exe4j把jar打包成exe文件 最近,做了几个javafx的项目,想要把jar包打成exe的可执行软件,下面时我使用exe4j打包的方法 1. 第0步:去官网下载 exe4j 2. 第一步:Welcome 这个地方最好要注册一下,如…

EXE4J 使用教程

一、背景 exe4j 可以很容易吧一个 jar 打包成 exe。但是对于一些刚接触 java 或者刚接触 exe4j 的 朋友来说,看看这个教程还是很有帮助的。 二、下载地址 Exe4j 下载地址:http://dl.dbank.com/c0owlopqf8 三、打包步骤 1、 从上面网址下载 exe4j 安装文件…

exe4j将jar包打成exe(添加jar、jdk、dll)

最近用Java写了一个小工具,想将它达成exe执行文件,到时候直接放某个目录下,一执行就能跑啦。 用到的工具: 1、写好的项目:可以是java项目,也可以是java web项目 2、能够打jar的工具:我用的MyEcl…

exe4j的安装与激活

1.下载 官网地址:https://www.ej-technologies.com/download/exe4j/files 6.0需要jdk1.8(本文下载是5.1) 2.安装——打开 激活:点击enter license 名称、公司随便填: A-XVK258563F-1p4lv7mg7sav A-XVK209982F-1y0i…

使用exe4j打包exe

原文地址:https://blog.csdn.net/qq_20473985/article/details/53186216 首先,需要下载一个exe4j的软件,网址:http://www.softpedia.com/get/Authoring-tools/Setup-creators/exe4j.shtml。 现在主要说一下怎么打exe的过程&#…

exe4j打包exe

一、过程如下 先将jar包和jre放在同一个文件,这里直接将jre也一起打包,这样的话,即使对方没有jar环境也可以运行该项目 启动exe4j,开始打包 -Dfile.encodingutf-8 -Dexe.path${EXE4J_EXEDIR}-Dfile.encodingutf-8 -Dexe.path…

exe4j安装及下载

1.首先去官网下载exe4j:https://www.ej-technologies.com/download/exe4j/files,选择对用版本下载 2.下载完成后,一直下一步就可以,如果对下载位置有要求,请自行变更 3.exe4j下载完成后需要添加注册码,否则每次打开都…

exe4j打成的exe文件运行时每次弹窗this executable was created with an evaluation version of exe4j

用exe4j打包的exe程序每次运行都会弹框提示如题所示。正常的程序不会提示这个,发布时必须去掉。搜索了一下找到网友给的方法。如下: 这是因为没有激活造成的,激活码网上很多,这里给一个L-g782dn2d-1f1yqxx1rv1sqd 点击welcome页的右下角的License, Name和…

java生成exe打包工具exe4j

exe4j.exe下载地址: http://download.ej-technologies.com/exe4j/exe4j_windows_4_0_1.exe 第一次安装时会出现下面的对话框: 它要求系统有1.5版本以上的JDK,点Download在线下载,如果你的机器上有JDK,点Locate找到你机器上已安装的…

超详细exe4j使用说明

超详细exe4j使用说明 1. 准备工作 ① 官网下载exe4j ,官网地址:https://www.ej-technologies.com/download/exe4j/files ② 确保已经安装了JDK,并且配置了环境变量,否则会导致打不开 ③ exe文件在安装目录的bin文件夹下 2. 直…

EXE4J(Windows Launcher Generator)——EXE4J概述、下载以及使用

基本概念 EXE4J:exe4j is a Windows launcher generator, that is included for free when you purchase install4j. exe4j is useful if you want to create a Java launcher without an installer. EXE4J:exe4j是Windows启动器生成器,购买i…

exe4j详细使用教程(附下载安装链接)

一、exe4j介绍 ​ exe4j是一个帮助你集成Java应用程序到Windows操作环境的java可执行文件生成工具,无论这些应用是用于服务器,还是图形用户界面(GUI)或命令行的应用程序。如果你想在任务管理器中及Windows XP分组的用户友好任务栏…

kubernetes rbac 权限管理

文章目录 访问控制概述kubernetes 下的 rbacServiceAccountK8s角色&角色绑定角色(Role和ClusterRole)角色绑定(RoleBinding和ClusterRoleBinding) 访问控制概述 访问控制是云原生中的一个重要组成部分,也是一个 K…

Kubernetes(k8s)权限管理RBAC详解

文章目录 一、简介二、用户分类三、K8s角色&角色绑定(以ServiceAccount展开讲解)1)授权介绍2)角色(Role和ClusterRole)3)角色绑定(RoleBinding和ClusterRoleBinding)…

RBAC权限管理设计

RBAC权限管理设计 一、RBAC组成1. RBAC2. RBAC组成3. RBAC支持的安全原则4. RBAC的优缺点 二、RBAC权限分配1. RBAC的功能模块2. RBAC权限分配操作过程:3. 后端如何判断用户权限 一、RBAC组成 1. RBAC RBAC:基于角色的权限访问控制(Role-Ba…

RBAC基本流程实现

RBAC中最重要的一个名词是role角色,项目中每个账号的权限不同,所以看到的东西,可以做的操作是不一样的,所以引入这个是非常有必要的,下面图中是5个表的实现,但是为了方便理解,用户表——角色表省…

RBAC用户权限管理数据库设计

RBAC(Role-Based Access Control,基于角色的访问控制),就是用户通过角色与权限进行关联。简单地说,一个用户拥有若干角色,每一个角色拥有若干权限。这样,就构造成“用户-角色-权限”的授权模型。…