使用 exe4j 将 Spring Boot 项目打包为 EXE 可执行文件

news2024/11/28 22:18:58

使用 exe4j 将 Spring Boot 项目打包为 EXE 可执行文件

文章目录

  • 使用 exe4j 将 Spring Boot 项目打包为 EXE 可执行文件
  • 什么是 exe4j
  • 准备工作
  • 打包 Spring Boot 项目为 EXE 文件
    • 1.启动 exe4j
    • 2. 选择项目类型
    • 3. 配置项目名称和输出目录
    • 4. 配置项目类型或可执行文件名称
    • 5. java配置
    • 6. JRE或JDK配置
    • 7. 配置启动动画
    • 8.配置Message
    • 9.编译
  • 注意事项
  • 验证 EXE 文件

什么是 exe4j

Exe4j 是一款用于将 Java 应用程序打包为 Windows 平台上可执行文件(.exe)的工具。无论是服务器端、GUI 程序还是命令行应用,都可以通过 exe4j 生成独立的 EXE 文件。此外,exe4j 还可以:

  • 替代默认的 java.exe,以自定义进程名出现在任务管理器中。
  • 提供本地启动画面。
  • 检测和绑定适合的 JRE/JDK。
  • 进行启动时错误处理。

注意:Exe4j 支持的 Java 版本范围为 JDK 1.8 到 JDK 11。

准备工作

  1. 环境要求

    • 安装 JDK(版本为 1.8 至 11)。
    • 准备 Spring Boot 项目的可运行 JAR 包。
  2. 下载和安装 Exe4j

    • 下载地址:https://www.ej-technologies.com/products/exe4j/download.html。
    • 也可使用提供的百度网盘链接:
      链接: https://pan.baidu.com/s/1NSn_9h_v0bvaCMq6coBjpw 提取码: v8kt。
  3. 确认项目已打包为 JAR 文件

    • 执行以下命令打包 Spring Boot 项目:

      mvn clean package
      
    • target 目录下找到生成的 JAR 文件(如 myapp.jar)。

打包 Spring Boot 项目为 EXE 文件

以下是通过 exe4j 打包的完整步骤:

1.启动 exe4j

打开 exe4j,进入欢迎界面后,点击 Next

image-20241125171047342

2. 选择项目类型

  • Executable Type 页面,选择 JAR in EXE mode(将 JAR 包转换为 EXE 文件),然后点击 Next

    image-20241125171135240

3. 配置项目名称和输出目录

image-20241125171307231

image-20241125171519432

image-20241125171720646

点击 Next

4. 配置项目类型或可执行文件名称

image-20241126111640867

配置操作系统支持 32-bit or 64-bit

  • 默认情况下会生成 32 位 EXE。
  • 如果需要在 64 位系统上运行,请勾选 Generate 64-bit executable

默认next

image-20241126112018690

5. java配置

  • JVM参数

    -Dfile.encoding=utf-8
    
  • 添加jar包

  • 选择程序入口

    如果是springboot项目,输入下面类

    org.springframework.boot.loader.JarLauncher
    
  • 添加jre或jdk

    入口Advanced 0ptions

    将jre或jdk复制到输出目录,选择jre或jdk,删除自带的

配置好的效果如下

6. JRE或JDK配置

image-20241126105758132

添加JRE或JDK

image-20241126110032289

删除默认的,只保留自己添加的

image-20241126110155678

默认JVM即可

image-20241126110438869

7. 配置启动动画

可忽略

image-20241126110600587

8.配置Message

可忽略

image-20241126110712084

9.编译

image-20241126110818053

编译完成后在输出目录就能看到了

image-20241126110912221

此时直接点击输出目录的exe文件即可运行,或者点击截图里面的Click Here to Start the Application运行

注意事项

  1. JAR 包格式
    • 默认 Spring Boot JAR 包是嵌套结构,主类应该指定为 org.springframework.boot.loader.JarLauncher
    • 如果需要主类直接加载,需要解压并重新打包 JAR,将 BOOT-INF/classes 的内容移到根目录,并将依赖放在类路径中。
  2. JRE 捆绑
    • 如果目标环境可能没有安装 JDK/JRE,建议将最小化的 JRE(如使用 jlink 生成的)与应用程序一同打包。
  3. 兼容性问题
    • Exe4j 仅支持 JDK 1.8 至 11,请确保 JDK 版本在此范围内。
    • 如果您的项目使用了 JDK 17 或更高版本,请改用其他工具(如 Launch4jjpackage)。
  4. 路径配置
    • 使用相对路径可以提高可移植性,尤其是在捆绑 JRE 的情况下。

验证 EXE 文件

  1. 将生成的 EXE 文件和依赖的 JAR 或捆绑的 JRE 一起复制到目标环境。
  2. 双击 EXE 文件,验证是否能正常运行。
  3. 在命令行中运行 EXE 文件,检查是否有错误日志输出。

通过以上步骤,您可以成功使用 Exe4j 将 Spring Boot 项目打包为 Windows 下的 EXE 文件。如果在过程中遇到问题,可以随时询问!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2249337.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

前端JavaScript(一)---基本介绍

Javascript是一种由Netscape(网景)的LiveScript发展而来的原型化继承的面向对象的动态类型的区分大小写的客户端脚本语言,主要目的是为了解决服务器端语言,比如Perl,遗留的速度问题,为客户提供更流畅的浏览效果。当时服务端需要对…

阿里Qwen系列开源模型介绍

模型种类丰富 Qwen2:包含Qwen2-0.5b、Qwen2-1.5b、Qwen2-7b、Qwen2-57b-a14b以及Qwen2-72b等五种规模的预训练和指令微调模型,其在多语言处理、长文本处理、代码生成、数学和逻辑推理等能力上,在mmlu、gpqa、humaneval等国际测评中得到了验证…

基于Java的小程序电商商城开源设计源码

近年来电商模式的发展越来越成熟,基于 Java 开发的小程序电商商城开源源码,为众多开发者和企业提供了构建个性化电商平台的有力工具。 基于Java的电子商城购物平台小程序的设计在手机上运行,可以实现管理员;首页、个人中心、用户…

开源 AI 智能名片 2 + 1 链动模式 S2B2C 商城小程序源码助力品牌共建:价值、策略与实践

摘要:在当今数字化商业环境下,品牌构建已演变为企业与消费者深度共建的过程。本文聚焦于“开源 AI 智能名片 2 1 链动模式 S2B2C 商城小程序源码”,探讨其如何融入品牌建设,通过剖析品牌价值构成,阐述该技术工具在助力…

力扣797. 所有可能的路径

算法思想 深度优先搜索(DFS): 使用递归从节点 0 开始,探索所有从当前节点到终点 n−1 的路径。每次访问一个节点时,将该节点加入当前路径 path。 回溯法: 在递归返回时,通过 path.pop_back()…

AMD(Xilinx) FPGA配置Flash大小选择

目录 1 FPGA配置Flash大小的决定因素2 为什么选择的Flash容量大小为最小保证能够完成整个FPGA的配置呢? 1 FPGA配置Flash大小的决定因素 在进行FPGA硬件设计时,选择合适的配置Flash是我们进行硬件设计必须考虑的,那么配置Flash大小的选择由什…

Git简单介绍

一、 Git介绍与安装 1.1 Git简介 Git是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。 1.2集中式(SVN) VS 分布式(git) 集中式版本控制系统,版本库是集中存放在中央服务器的,工作时要先从中央…

FreeSWITCH 简单图形化界面34 - 网络环境安全的情况下,进行任意SIP注册

FreeSWITCH 简单图形化界面34 -网络环境安全的情况下,进行任意SIP注册 测试环境1、前言2、参数3、实践一下 测试环境 http://myfs.f3322.net:8020/ 用户名:admin,密码:admin FreeSWITCH界面安装参考:https://blog.cs…

力扣 二叉树的层序遍历-102

二叉树的层序遍历-102 class Solution { public:vector<vector<int>> levelOrder(TreeNode* root) {vector<vector<int>> res; // 二维数组用来存储每层节点if (root nullptr)return res;queue<TreeNode*> q; // 队列用来进行层序遍历q.push(r…

鸿蒙学习使用本地真机运行应用/元服务 (开发篇)

文章目录 1、前提条件2、使用USB连接方式3、使用无线调试连接方式4、运行 1、前提条件 在Phone和Tablet中运行HarmonyOS应用/元服务的操作方法一致&#xff0c;可以采用USB连接方式或者无线调试的连接方式。两种连接方式是互斥的&#xff0c;只能使用一种&#xff0c;无法同时…

数据库导论

data 数据是数据库中存储的基本数据&#xff0c;描述事物的符号称为数据。 DB 数据库是长期存储在计算机内&#xff0c;有组织&#xff0c;可共享的大量数据的集合。数据库中的数据按照一定的数据模型组织&#xff0c;描述和存储&#xff0c;具有较小的冗余度&#xff0c;较…

数据结构 ——— 归并排序算法的实现

目录 归并排序的思想 归并排序算法的实现 归并排序的思想 将已经有序的子序列合并&#xff0c;得到完全有序的序列&#xff0c;即先使每个子序列有序后&#xff0c;再使子序列段间有序 若将两个有序表合并成一个有序表&#xff0c;称为二路归并 归并排序步骤示意图&#x…

【数据结构】【线性表】一文讲完队列(附C语言源码)

队列 队列的基本概念基本术语基本操作 队列的顺序实现顺序队列结构体的创建顺序队列的初始化顺序队列入队顺序队列出队顺序队列存在的问题分析循环队列代码汇总 队列的链式实现链式队列的创建链式队列初始化-不带头结点链式队列入队-不带头节点链式队列出队-不带头结点带头结点…

chrome允许http网站打开摄像头和麦克风

第一步 chrome://flags/#unsafely-treat-insecure-origin-as-secure 第二步 填入网址&#xff0c;点击启用 第三步 重启 Chrome&#xff1a;设置完成后&#xff0c;点击页面底部的 “Relaunch” 按钮&#xff0c;重新启动 Chrome 浏览器&#xff0c;使更改生效。

Spring Boot教程之十: 使用 Spring Boot 实现从数据库动态下拉列表

使用 Spring Boot 实现从数据库动态下拉列表 动态下拉列表&#xff08;或依赖下拉列表&#xff09;的概念令人兴奋&#xff0c;但编写起来却颇具挑战性。动态下拉列表意味着一个下拉列表中的值依赖于前一个下拉列表中选择的值。一个简单的例子是三个下拉框&#xff0c;分别显示…

DRM(数字权限管理技术)防截屏录屏----视频转hls流加密、web解密播放

提示&#xff1a;视频转hls流加密、web解密播放 需求&#xff1a;研究视频截屏时&#xff0c;播放器变黑&#xff0c;所以先研究的视频转hls流加密 文章目录 [TOC](文章目录) 前言一、工具ffmpeg、openssl二、后端nodeexpress三、web播放四、文档总结 前言 ‌HLS流媒体协议‌&a…

视觉经典神经网络与复现:深入解析与实践指南

目录 引言 经典视觉神经网络模型详解 1. LeNet-5&#xff1a;卷积神经网络的先驱 LeNet-5的关键特点&#xff1a; 2. AlexNet&#xff1a;深度学习的突破 AlexNet的关键特点&#xff1a; 3. VGGNet&#xff1a;深度与简洁的平衡 VGGNet的关键特点&#xff1a; 4. ResNe…

【算法day1】数组:双指针算法

题目引用 这里以 1、LeetCode704.二分查找 2、LeetCode27.移除元素 3、LeetCode977.有序数组的平方 这三道题举例来说明数组中双指针的妙用。 1、二分查找 给定一个 n 个元素有序的&#xff08;升序&#xff09;整型数组 nums 和一个目标值 target &#xff0c;写一个函数搜…

华为云云连接+squid进行正向代理上网冲浪

1 概述 ‌Squid‌是一个高性能的代理缓存服务器&#xff0c;主要用于缓冲Internet数据。它支持多种协议&#xff0c;包括FTP、gopher、HTTPS和HTTP。Squid通过一个单独的、非模块化的、I/O驱动的进程来处理所有的客户端请求&#xff0c;这使得它在处理请求时具有较高的效率‌。…

2024年11月24日Github流行趋势

项目名称&#xff1a;FreeCAD 项目维护者&#xff1a;wwmayer, yorikvanhavre, berndhahnebach, chennes, WandererFan等项目介绍&#xff1a;FreeCAD是一个免费且开源的多平台3D参数化建模工具。项目star数&#xff1a;20,875项目fork数&#xff1a;4,117 项目名称&#xff1…