SpringBoot打包成exe(别再用exe4j了,使用JDK自带工具)
SpringBoot打包成exe(别再用exe4j了,使用JDK自带工具)
- 搜到大部分打包exe的文章都是使用exe4j打包
- 步骤贼多,安装麻烦,打包麻烦
- 收费软件,公司使用会吃律师函
- JDK14以上可以使用JDK自带的jpackage打包
- JDK自带,一行命令搞定
- 生成的程序包括java环境,用户不需要安装java
实测环境
- JDK:17.0.6
步骤
- 创建一个Springboot项目,开发代码
- 使用"mvn package"打包成jar
- 在项目下生产target目录,且包含打包成的jar(例如:spring-1.0.jar)
- 要确认这个jar能使用"java -jar ***.jar"运行
- 打开命令行(CMD/Powershell)进入项目根目录成exe
- 使用jpackage打包,如下
jpackage --type app-image --name spring --input target --main-jar spring-1.0.jar --win-console --dest dist
| 参数 | 作用 | 示例 | 说明 |
|---|---|---|---|
| --type | 打包类型 | app-image | 可选:"app-image", "exe", "msi",这里使用app-image,选择另外两个选项需要安装WiX |
| --name | 应用名称 | spring | 打包后的名称,如"sping.exe" |
| --input | 输入目录 | target | 该目录所有文件打包到应用目录中 |
| --main-jar | 应用主jar | spring-1.0.jar | --input目录里的jar程序 |
| --win-console | 运行时启动控制台 | --win-console | 打开应用程序时,打开控制台。如果不启用在后台运行,关闭只能从任务管理器中结束任务 |
| --dest | 输出目录 | dist | 输出到该目录,不要和--input同个目录,否则会无限循环复制目录 |
输出目录
- dist
- spring
- app // 项目代码,和target目录基本一致
- ...文件略
- runtime // 运行环境,用户可以不安装java
- ...文件略
- spring.exe // 点击该exe即可运行
- spring.ico
- app // 项目代码,和target目录基本一致
- spring
- target
- ...目录略
- spring-1.0.jar
- spring-1.0.jar.original
说明
- 可以将spring目录压缩成zip发给用户使用
- 目录里包含了runtime,用户电脑不需要安装java
- 打包前:153MB
- 打包后(zip):71.8MB
总结
- 在不得不开发客户端时,很多人选择JavaFX开发,但大家大部分使用spring全家桶开发
- 用这种方式,可以继续使用spring开发
- 继续前后端分离开发
- 前端代码框架(如:Ant D)打包后是静态文件,可直接放入resources目录
- 使用jpackage打包成exe
- 发送给用户直接打开使用
- 用户在浏览器就可以访问
- 可以优化成启动程序时自动打开url
@Slf4j
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
// 使用默认浏览器打开
try {
Runtime.getRuntime().exec(String.format("cmd /c start %s", "http://localhost:8080/index.html"));
} catch (Exception e) {
log.warn("打开客户端主页失败", e);
}
}
}
参考资料
- JPackage指令将可执行Jar包打包成EXE运行程序和MSI安装程序
- 该文章说必须安装WiX和.NetFramework。但我实测时app-image类型不需要(有可能是因为JDK版本)
SpringBoot打包成exe(别再用exe4j了,使用JDK自带工具)的更多相关文章
- 把Python项目打包成exe文件
我们很多时候,写好的程序需要打包成.exe文件才可以发给客户,那么今天我就来谈一谈,如何将一个写好的Python程序打包成exe文件! 首先,我们我们使用到的工具是python 3.7 和 Pyins ...
- java项目采用exe4j打包成exe档
java项目采用exe4j打包成exe档 前言:我们都知道java是平台无关性.能够打包成jar文件,到不论什么操作系统有jre环境的电脑都能够同意!可是我们打包成exe文件就相当于舍弃了这一大优势, ...
- JAVA程序打包成exe小程序的过程
编程软件:myeclipse2014 打包exe软件:exe4j 1:在myeclipse2014新建java项目编写程序 2:打包成jar,分两种情况(有无外部依赖包) 无外部依赖包:点击项目--- ...
- JAVA程序打包成exe文件详细图解
我们都知道Java可以将二进制程序打包成可执行jar文件,双击这个jar和双击exe效果是一样一样的,但感觉还是不同.其实将java程序打包成exe也需要这个可执行jar文件. 准备: eclipse ...
- class打包成exe方式
首先运行dos命令 jar -cvf **.jar *.class 把所有文件打包成jar包 用解压器打开jar包 打开meta-inf文件夹 打开用记事本打开main.mf文件 增加语句Main-C ...
- python的py文件打包成exe
一.首先需要安装Pyinstaller-- 使用pip来安装模块 (我电脑上装的是python的一个编译环境Anaconda,如果电脑上装的是python自带的IDE的话,就直接进入python的安装 ...
- 利用Advanced Installer将asp.netMVC连同IIS服务和mysql数据库一块打包成exe安装包
因为业务需要,项目中需要把asp.netmvc项目打包成exe安装程序给客户,让客户直接可以点下一步下一步安装部署web程序,并且同时要将IIS服务和mysql一同安装到服务器上,因为客户的电脑可能是 ...
- Java 精简Jre jar打包成exe
#开始 最近几天都在忙一个事情,那就是尝试精简jre,我想不明白为什么甲骨文官方不出exe打包工具... 网络上精简jre的文章很多,但是原创的似乎没几个,绝大多数都是转发同一个博客, 这里借鉴了不少 ...
- Java桌面程序打包成exe可执行文件
前言: 我们都知道Java可以将二进制程序打包成可执行jar文件,双击这个jar和双击exe效果是一样一样的,但感觉还是不同.其实将java程序打包成exe也需要这个可执行jar文件. 准备: ecl ...
- 如何把py文件打包成exe可执行文件
如何把py文件打包成exe可执行文件 1.安装 pip install pyinstaller 或者 pip install -i https://pypi.douban.com/simple pyi ...
随机推荐
- vue项目安装淘宝镜像一直失败,解决办法
这个问题纠缠了我好几天,刚开始把npm,node卸载了重装,发现还是一样的问题,最后发现是权限不够,下面这个方法完美解决 失败原因:没有用管理员权限执行, 解决办法:找到安装nodejs安装的路径,再 ...
- 【Win11】Win11家庭版升级专业版
1.将已激活的Win11家庭版升级成未激活的Win11专业版:输入密钥[BCQNW-3VWYB-4V7QD-M6R2B-7MH26] 2.将未激活的Win11专业版升级成已激活的专业版 :输入密钥[6 ...
- toString能转换number类型吗
let num = 60console.log(toString(num)) // [object Undefined] console.log(String(num)) // 60
- vue3.0+vite+ts项目搭建--初始化项目
使用yarn yarn create vite 使用pnpm pnpx create-vite(pnpm create vite + 项目名) 根据提示输入项目名称,选择vue框架,选择vue-ts, ...
- TCP 为什么是 三次 握手 不是两次 不是四次
为什么不是两次 (1) 防止 历史 旧数据 连接 客户端连续发送多次 SYN 建⽴连接的报⽂,在⽹络拥堵等情况下: ● ⼀个「旧 SYN 报⽂」⽐「最新的 SYN 」 报⽂早到达了服务端: ● 那 ...
- Q:oracle 日期筛选
一.oracle where条件日期筛选 两种方法:tochar和todate todate:将字符串按照指定的格式输出,得到的是日期类型. to_date('2019-12-01','yyyy-MM ...
- (六).JavaScript的数组(2)
1.10 作用域链 定义: 作用域链:查找变量的过程 作用: 查找变量 查找规则:首先会在自身作用域找变量,找到就用 如果没有,就去上级作用域查找,找到就用 如果没有,一直往上找,直到全局作用域,有就 ...
- Java压缩音频视频工具类
/** * TODO * * @author Administrator * @version 1.0 * @date 2021/11/5 16:55 */ public class vedio { ...
- 使用hugo在gitee上写blog
1. 安装hugo 1)下载 Hugo Releases,选择hugo_xxx_Windows-64bit.zip(xxx位版本). 2)设置路径 我的电脑->属性->高级系统设置-> ...
- 财开心批量处理系统V4.0
前言 上次分析了亿企代账对他的发票提取有很大兴趣,同时下载了几大财务厂商提供的发票提取,很多都是采用的这个,如云账房销项提取插件还有本次研究的财开心批量处理系统 分析 demo 直接用亿企代账分析的代 ...