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
  • 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);
}
}
}

参考资料

SpringBoot打包成exe(别再用exe4j了,使用JDK自带工具)的更多相关文章

  1. 把Python项目打包成exe文件

    我们很多时候,写好的程序需要打包成.exe文件才可以发给客户,那么今天我就来谈一谈,如何将一个写好的Python程序打包成exe文件! 首先,我们我们使用到的工具是python 3.7 和 Pyins ...

  2. java项目采用exe4j打包成exe档

    java项目采用exe4j打包成exe档 前言:我们都知道java是平台无关性.能够打包成jar文件,到不论什么操作系统有jre环境的电脑都能够同意!可是我们打包成exe文件就相当于舍弃了这一大优势, ...

  3. JAVA程序打包成exe小程序的过程

    编程软件:myeclipse2014 打包exe软件:exe4j 1:在myeclipse2014新建java项目编写程序 2:打包成jar,分两种情况(有无外部依赖包) 无外部依赖包:点击项目--- ...

  4. JAVA程序打包成exe文件详细图解

    我们都知道Java可以将二进制程序打包成可执行jar文件,双击这个jar和双击exe效果是一样一样的,但感觉还是不同.其实将java程序打包成exe也需要这个可执行jar文件. 准备: eclipse ...

  5. class打包成exe方式

    首先运行dos命令 jar -cvf **.jar *.class 把所有文件打包成jar包 用解压器打开jar包 打开meta-inf文件夹 打开用记事本打开main.mf文件 增加语句Main-C ...

  6. python的py文件打包成exe

    一.首先需要安装Pyinstaller-- 使用pip来安装模块 (我电脑上装的是python的一个编译环境Anaconda,如果电脑上装的是python自带的IDE的话,就直接进入python的安装 ...

  7. 利用Advanced Installer将asp.netMVC连同IIS服务和mysql数据库一块打包成exe安装包

    因为业务需要,项目中需要把asp.netmvc项目打包成exe安装程序给客户,让客户直接可以点下一步下一步安装部署web程序,并且同时要将IIS服务和mysql一同安装到服务器上,因为客户的电脑可能是 ...

  8. Java 精简Jre jar打包成exe

    #开始 最近几天都在忙一个事情,那就是尝试精简jre,我想不明白为什么甲骨文官方不出exe打包工具... 网络上精简jre的文章很多,但是原创的似乎没几个,绝大多数都是转发同一个博客, 这里借鉴了不少 ...

  9. Java桌面程序打包成exe可执行文件

    前言: 我们都知道Java可以将二进制程序打包成可执行jar文件,双击这个jar和双击exe效果是一样一样的,但感觉还是不同.其实将java程序打包成exe也需要这个可执行jar文件. 准备: ecl ...

  10. 如何把py文件打包成exe可执行文件

    如何把py文件打包成exe可执行文件 1.安装 pip install pyinstaller 或者 pip install -i https://pypi.douban.com/simple pyi ...

随机推荐

  1. 【python基础笔记-3】decimal模块解决浮点数计算精度问题

    通过Decimal('123.456')对象实例化后做 + - * / 等运算符操作计算结果不会出现精度问题. Tips:值得注意的2点是 1.Decimal接收的入参是str,所以如果原本操作的数据 ...

  2. 如何申请ios证书

    第一次申请ios证书  记录下来 第一步 随便找个可以在线生成ios证书的网站 在这里生成csr文件 https://www.yunedit.com/update/ioszhengshu/list 第 ...

  3. pyechart画图(1)安装和基本操作

    安装 pip install pyecharts==0.1.9.4 https://blog.csdn.net/weixin_43735353/article/details/89328048 Lin ...

  4. PLC入门笔记7

    梯形图与指令表的转换 后缀表达式 开头是MPS 结尾是MPP 中间就是MRD啦!!!! MPS 存入堆栈(将目前累加器的内容存入堆栈.(堆栈指针加一))将当前数据栈顶数据复制一份到辅助栈 栈深度+1 ...

  5. linux 学习之awk

    awk 笔记 awk可以截取列 如 ll | awk '{print $3}' 获取第三列内容 参数 -F 指定分隔符 如 ls | wak -F "." '{print $1}' ...

  6. RS485总线常用拓扑结构

    RS485总线拓扑结构一般可分为以下4种,分别是:总线型拓扑结构.星型拓扑结构.树形拓扑结构.环形拓扑结构.根据RS485总线布线规范,只能按照总线拓扑结构布线,但是由于现场环境复杂多变,为了能够使整 ...

  7. cv2安装

    pip install opencv-contrib-python

  8. SqlServer 不能收缩 ID 为 %s 的数据库中 ID 为 %s 的文件,因为它正由其他进程收缩或为空。

    SQLServer数据库通常都不建议进行SHRINKFILE操作,因为SHRINKFILE不当会造成一定的性能问题. 但是当进行了某些操作(例如某个超大的日志类型表转成分区表切换了数据文件),数据库某 ...

  9. 持续集成环境(6)-Tomcat安装和配置(编写中)

    安装Tomcat8.5 把Tomcat压缩包上传到tomcat服务器(tomcat专用服务测试服务器.生产服务器) yum install java-1.8.0-openjdk* -y wget ht ...

  10. C语言中字符数组的赋值和复制

    /*C中,字符串,即字符数组的赋值与字符变量.常量.变量的赋值是不同的.初学者总会犯错误. 常见错误如下: 1.定义的时候直接用字符串赋值 char a[10]; char a[10]="h ...