美文网首页
SpringBoot打包成exe(别再用exe4j了,使用JDK

SpringBoot打包成exe(别再用exe4j了,使用JDK

作者: 言午日尧耳总 | 来源:发表于2023-03-30 20:13 被阅读0次

    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

          本文链接:https://www.haomeiwen.com/subject/bfycddtx.html