【java开发】使用Launch4j将Web应用的Jar包打包成exe

news/2024/11/27 13:51:50/文章来源:https://www.cnblogs.com/o-O-oO/p/18572201

如果当你在工作中使用Java比较多,有时会碰到将Jar包打包成exe部署在客户电脑上的需求。经过一顿操作猛如虎的网上搜索,最后技术选型选择了Launch4j,就图它开源免费、上手简单。

Launch4j 是一个跨平台工具,用于将以 JAR 文件分发的 Java 应用程序封装为轻量级的 Windows 原生可执行文件。该可执行文件可以配置为搜索特定的 JRE 版本,或者使用捆绑的 JRE,并且可以设置运行时选项,例如初始/最大堆大小。这个包装器还通过应用程序图标、 设置 启动画面,以及在找不到适当的 JRE 时提供 Java 下载页面,来提升用户体验。

一、准备工作

选择jre版本1.8.0_202
将Web应用程序打成Jar包
选择Launch4j版本3.8
从官网(http://launch4j.sourceforge.net/)下载Launch4j安装包并按提示安装。

二、操作步骤

2.1 设置基本参数

进入launch4j安装目录,双击运行launch4j.exe,在弹出窗口中选择Basic标签设置基本参数如下:

output file表示生成exe文件的文件路径。
jar表示应用程序的jar包文件路径。
Command line arg表示jar包运行所需的命令行参数,这里根据应用实际情况填写,本案例填写参数为--spring.config.location=classpath:/bootstrap-prod.properties --spring.profiles.active=prod。

为了让应用程序在未安装Java环境的电脑上也能运行,我们可以将JRE与EXE文件一起分发。将JRE目录复制到新创建的程序文件夹重命名为”jre”,以简化引用路径,整个目录结构如下:

2.2 修改launch4j上Header配置

选择“Header”标签页,Web应用程序这里选择控制台如图:

2.3 修改launch4j上Single Instance配置

选择“Single Instance”标签页,设置程序只能单实例启动的名称和标题如图:

2.4 修改launch4j上JRE配置

选择“JRE”标签页,请根据应用程序实际情况设置以下参数:

“Bundled JRE path”表示绑定的jre文件路径,这里将此选项设置为相对路径”./jre”。
“64-bit”表示jre版本是否64位。
“Min jre version”表示jre最低版本。

2.5 打包成EXE

点击launch4j工具栏上的“设置启动”按钮即可,如图:

最终打包的目录内容如下:

将以上全部内容打成一个压缩包发给用户不需要安装,直接运行test.exe即可。

运行效果如下图:

三、总结

通过使用Launch4j,我们可以轻松地将Java的Jar包打包成EXE文件,并配置绑定的JRE以确保应用程序在未安装Java环境的电脑上也能运行。这一方法不仅提高了应用程序的分发便利性,还提升了用户体验。通过详细的操作步骤和配置,我们可以确保生成的EXE文件能够正确地运行Java应用程序,满足客户的需求。

原创 南方的程

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

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

相关文章

modbus通讯协议

一.modbus的四种传输协议: Modbus RTU:使用二进制格式进行数据传输,通讯效率更高. Modbus ASCII使用ASCII码进行数据传输,可读性好,但通讯效率更低. Modbus TCP/IP是基于以太网的一种通讯方式,它将Modbus协议封装在TCP/IP协议栈中,通过以太网传输数据。具有高速、稳定的特…

简单搭建一个小型拓扑,练习路由器的Esay IP的设置

内网用户需要访问外网时,可以通过配置NAT,实现IP数据报标头IP的替换。 本条博客是NAT转换的具体实现方式,由华为官方文档摘录Esay IP的实现。1. cloud云的配置 增加两个Ethernet端口,添加到端口映射表2.路由器的配置# 进入系统视图 <Huawei>system-view # 查看简洁的…

使用 Pyinstaller 打包为 windows exe程序 添加管理员权限的多种方式

使用 Pyinstaller 打包为 windows exe程序 添加管理员权限的多种方式 本文提供几种在使用 Pyinstaller打包后,为包体 exe提升管理员权限的方式。 注意事项: 管理员权限的必要性:确保程序确实需要管理员权限,否则用户可能会质疑程序的安全性。 数字签名:最好对生成的 .exe …

DSPf28335-时钟及控制系统

外部晶振30Mhz,经过十倍频与二分频得到150Mhz系统时钟系统时钟在供给外设,为不同的外设提供不同的时钟频率,进行不同程度的分频分别供给SPI-A,SCI-A;I2C-A;eCAN-A/B;ePWM;eCAP等外设进行系统控制;

【嵌入式开发】log.c:一个非常轻量的嵌入式日志库

log.c简介github链接: https://github.com/rxi/log.clog.c是一个轻量级的日志库。一个用 C99 实现的简单日志库,这意味着它应该可以在任何支持 C99 标准的平台上编译和运行,如我们的嵌入式系统中。 特点: 使用C99标准,适用于嵌入式。 支持静默模式。 支持日志级别设置。 支…

Day1.了解MarkDown

Markdown学习 标题 三级 四级 +空格+文字=标题 几个#就是几级标题 字体 Hello World! 两边各一个*,斜体 Hello World! 两边各两个*,加粗 Hello World! 两边各三个*,斜体+加粗 Hello World! 两边各两个~~,划去 引用每天学一点,早晚成大佬。 一个箭头符号<或>分割…

kubectl 命令行快速操作

集群安装完成后,查看集群信息 [root@k8s-master1 images]# kubectl version [root@k8s-master1 images]# kubectl cluster-info[root@k8s-master1 images]# kubectl version Client Version: version.Info{Major:"1", Minor:"14", GitVersion:"…

vxe-table grid 分享实现单元格编辑表格表尾合计实时计算

在使用 vxe-grid 时,需要实现表尾合计功能,通过单元格编辑之后,实时自动计算表尾合计的值,自动更新表尾合计数据,实现方式通过监听change 事件,从而实现实时更新合计功能。 官网:https://vxetable.cn可以使用插槽模板,也可以使用配置式,下面是配置式的用法: <temp…

zabbix搭建完,web端显示“zabbix服务器端运行中 不”

abbix搭建完,web端显示“zabbix服务器端运行中 不”如下图: 但是查看服务器的状态是running然后查日志/var/log/zabbix/zabbix-server.log 问过度娘之后,发现需要修改/etc/zabbix/zabbix_server.conf文件,在其中添加:DBSocket=/usr/local/mysql/mysql.sock然后重启还是不行…

在VS Code里写C#

Visual Studio下载安装比较耗时,耗磁盘空间,创建C#工程慢。今天尝试了一下在VS Code里创建C#工程,并且跑起来,体验挺轻量的,后面有小的练习,直接在VS Code里测试,应该有不错的体验。 本文是参考了 Get started with C# and .NET in Visual Studio Code。 步骤: 1. 下载…

python 多进程multiprocessing 内存占用 物理内存 虚拟内存 windows 分析

只有 import time time.sleep(10) 前边加上 from torch.utils.data import Dataset import torch# 检查是否支持 CUDA if torch.cuda.is_available():print("CUDA is available!")print(f"Device count: {torch.cuda.device_count()}")print(f"Curre…

【日记】我得承认,我在看到她消息的一瞬间,确实心跳加速了(2437 字)

正文昨天晚上又去玩儿了一会儿,发现自己的基本功大崩溃。都快忘光了。今天没怎么看书,聊了一会儿天。当然最重要的这个事情之后再说。下午一脸懵地被叫去检查组了。骂得好狠。“客户报过来的资料你们都不看一下的吗?” 内控的那个更年期主管如是说。这个问题是内控部门另一个…