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

使用 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.mzph.cn/news/887656.shtml

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

相关文章

【操作文档】mysql分区操作步骤.docx

1、建立分区表 执行 tb_intercept_notice表-重建-添加分区.sql 文件; DROP TABLE IF EXISTS tb_intercept_notice_20241101_new; CREATE TABLE tb_intercept_notice_20241101_new (id char(32) NOT NULL COMMENT id,number varchar(30) NOT NULL COMMENT 号码,cre…

使用 pycharm 新建不使用 python 虚拟环境( venv、conda )的工程

有时候我们发现一个好玩的 demo,想赶快在电脑上 pip install 一下跑起来,发现因为 python 的 venv、conda 环境还挺费劲的,因为随着时间的发展,之前记得很清楚的 venv、conda 的用法,不经常使用,半天跑不起…

安全设备-日志审计-数据管理

7 日志审计系统数据管理 7.1 日志审计系统数据管理概述 日志审计系统数据管理系统自身数据存储管理,并对自身配置、采集的日志进行统一管理。 7.2 日志审计系统数据管理配置举例 7.2.1 用户场景 用户通过数据管理配置,实现对系统的备份、清理、转存…

简单的Activiti Modoler 流程在线编辑器

简单的Activiti Modoler 流程在线编辑器 1.需求 我们公司使用的流程是activiti5.22.0,版本有些老了,然后使用的编辑器都是eclipse的流程编辑器插件,每次编辑流程需要打开eclipse进行编辑,然后再导入到项目里面,不是特…

玩转 uni-app 静态资源 static 目录的条件编译

一. 前言 老生常谈,了解 uni-app 的开发都知道,uni-app 可以同时支持编译到多个平台,如小程序、H5、移动端 App 等。它的多端编译能力是 uni-app 的一大特点,让开发者可以使用同一套代码基于 Vue.js 的语法编写程序,然…

云技术-docker

声明! 学习视频来自B站up主 **泷羽sec** 有兴趣的师傅可以关注一下,如涉及侵权马上删除文章,笔记只是方便各位师傅的学习和探讨,文章所提到的网站以及内容,只做学习交流,其他均与本人以及泷羽sec团…

【C++】从C语言到C++学习指南

如果你也是从C语言一路过来的,那么请一起看下去吧! 文章目录 面型对象程序设计C基础C和C一些语法区别C在非对象方面对C语言的扩充C的一些标准(兼容旧标准) 首先,在C的学习中,我们要时刻清醒一点&#xff1…

【FPGA开发】Vivado自定义封装IP核,绑定总线

支持单个文件的封装、整个工程的封装,这里用单个文件举例。 在文件工程目录下,自建一个文件夹,里面放上需要封装的verilog文件。 选择第三个,指定路径封装,找到文件所在目录 取个名,选择封装IP的路径 会…

CA系统(file.h---申请认证的处理)

#pragma once #ifndef FILEMANAGER_H #define FILEMANAGER_H #include <string> namespace F_ile {// 读取文件&#xff0c;返回文件内容bool readFilename(const std::string& filePath);bool readFilePubilcpath(const std::string& filePath);bool getNameFro…

前端-Git

一.基本概念 Git版本控制系统时一个分布式系统&#xff0c;是用来保存工程源代码历史状态的命令行工具 简单来说Git的作用就是版本管理工具。 Git的应用场景&#xff1a;多人开发管理代码&#xff1b;异地开发&#xff0c;版本管理&#xff0c;版本回滚。 Git 的三个区域&a…

深入浅出摸透AIGC文生图产品SD(Stable Diffusion)

hihi,朋友们,时隔半年(24年11月),终于能腾出时间唠一唠SD了🤣,真怕再不唠一唠,就轮不到SD了,技术更新换代是在是太快! 朋友们,最近(24年2月)是真的没时间整理笔记,每天都在疯狂的学习Stable Diffusion和WebUI & ComfyUI,工作实在有点忙,实践期间在飞书上…

HCIP——堆叠技术实验配置

目录 一、堆叠的理论知识 二、堆叠技术实验配置 三、总结 一、堆叠的理论知识 1.1堆叠概述&#xff1a; 是指将两台交换机通过堆叠线缆连接在一起&#xff0c;从逻辑上变成一台交换设备&#xff0c;作为一个整体参与数据的转发。 1.2堆叠的基本概念 堆叠系统中所有的单台…

快速上手:如何开发一个实用的 Edge 插件

在日常浏览网页时&#xff0c;背景图片能够显著提升网页的视觉体验。如果你也想为自己的浏览器页面添加个性化背景图片&#xff0c;并希望背景图片设置能够持久保存&#xff0c;本文将介绍如何通过开发一个自定义Edge插件来实现这一功能。我们将涵盖保存背景设置到插件选项页&a…

介绍一下atol(arr);(c基础)

hi , I am 36 适合对象c语言初学者 atol(arr)&#xff1b;是返回整数(long型)&#xff0c;整数是arr数组中字符中数字 格式 #include<stdio.h> atol(arr); 返回值arr数组中的数字 未改变arr数组 #include<stdio.h> //atol(arr); 返 <stdlib> int main…

Python的排序算法

一、算法 1.1 算法概念 算法就是计算机解决问题的方法或者步骤 程序 数据结构 算法 1.2 算法的特性 1】确定性&#xff1a; 算法的每条语句具有明确的意思&#xff0c;不能模棱两可 2】有穷性&#xff1a;在执行一定的时间后&#xff0c;能自动结束算法 3】输入&#…

npm install -g@vue/cli报错解决:npm error code ENOENT npm error syscall open

这里写目录标题 报错信息1解决方案 报错信息2解决方案 报错信息1 使用npm install -gvue/cli时&#xff0c;发生报错&#xff0c;报错图片如下&#xff1a; 根据报错信息可以知道&#xff0c;缺少package.json文件。 解决方案 缺什么补什么&#xff0c;这里我们使用命令npm…

在windows操作系统上,用git与github账户连接

一、环境准备 1.1 git软件 1.2 github账号 1.3 创建一个项目目录&#xff0c;比如 D:\project\gitproject 二、开始操作 1. 进入项目目录下&#xff0c;右键&#xff0c;如图&#xff0c;打开git bash命令行 2. 在命令行输入以下三个命令 $ git config --global user.name &quo…

视频监控实现画面缩放功能

文章目录 概要一、功能说明二、核心实现代码三、技术细节 概要 在视频监控系统中&#xff0c;经常需要查看视频画面中的细节。通过实现区域放大、滚轮缩放和拖拽平移等功能&#xff0c;可以让用户更方便地观察视频细节。本文介绍如何在 Windows 系统下实现这些交互功能。 一、…

鸿蒙本地模拟器 模拟TCP服务端的过程

鸿蒙模拟器模拟TCP服务端的过程涉及几个关键步骤&#xff0c;主要包括创建TCPSocketServer实例、绑定IP地址和端口、监听连接请求、接收和发送数据以及处理连接事件。以下是详细的模拟过程&#xff1a; **1.创建TCPSocketServer实例&#xff1a;**首先&#xff0c;需要导入鸿蒙…

Three.js 和其他 WebGL 库 对比

在WebGL开发中&#xff0c;Three.js是一个非常流行的库&#xff0c;它简化了3D图形的创建和渲染过程。然而&#xff0c;市场上还有许多其他的WebGL库&#xff0c;如 Babylon.js、PlayCanvas、PIXI.js 和 Cesium&#xff0c;它们也有各自的特点和优势。本文将对Three.js 与这些常…