首页 > 其他分享 >SpringBoot打包成exe(别再用exe4j了,使用JDK自带工具)

SpringBoot打包成exe(别再用exe4j了,使用JDK自带工具)

时间:2023-03-31 20:25:15浏览次数:44  
标签:exe SpringBoot JDK -- spring jar 目录 打包

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

参考资料

标签:exe,SpringBoot,JDK,--,spring,jar,目录,打包
From: https://www.cnblogs.com/XuXiaoCong/p/17277388.html

相关文章

  • SpringBoot 介绍
    1、定义SpringBoot是由Pivotal团队在2013年开始研发,2014年4月发布第一个版本的全新开源的轻量级框架。它基于Spring4.0设计,不仅继承了Spring框架原有的优秀特性,而且还通过简化配置,简化了Spring项目的初始搭建和开发过程。Boot是启动的意思,SpringBoot本......
  • SpringBoot下动态数据源
    第一种:Mybatis-Plus的dynamic-datasourceGitee地址:https://gitee.com/baomidou/dynamic-datasource-spring-boot-starter要实现其实很简单,一个注解就可以了1、创建两个一库,一样的表进行测试2、搭建SpringBoot引入dynamic-datasource依赖<dependency><groupId>com.baomidou......
  • SpringBoot微服务集成keycloak实现跨平台统一认证授权
    //项目架构微服务划分://auth认证微服务实现登录认证拦截,获取token//gateway网关微服务//user用户微服务用户权限管理//system系统微服务核心逻辑处理//xxx其他微服务//common模块//1、common模块引入keycloak认证相关依赖<properties><keyc......
  • SpringBoot中常见的各种初始化场景分析
    大家能区分出以下各种初始化适用的场景吗ApplicationRunner,CommandLineRunner,BeanFactoryPostProcessor,InitializingBean,BeanPostProcessor首先可以简单分类Springboot的钩子        1,ApplicationRunner        2,CommandLineRunner上述2个钩子其实没啥......
  • SpringBoot 使用RedisTemplate
    1.导入Maven依赖<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency>2.配置连接信息spring:redis:host:127.0.0.1......
  • SpringBoot 集成支付宝的各种应用场景
    SpringBoot是一个非常流行的Java框架,它提供了一种快速、简便的方式来开发基于Java的Web应用程序。支付宝是中国最大的第三方支付平台,它提供了丰富的API,支持多种支付方式。在本篇博客中,我将介绍如何使用SpringBoot集成支付宝支付,包括以下几个场景:手机网站支付电脑网站支付移动支付......
  • SpringBoot 集成微信支付的各种支付产品
    SpringBoot是一款非常流行的Java开发框架,而微信支付则是众多移动支付产品中的佼佼者,整合两者可以让我们更方便地开发各种支付产品。在本篇博客中,我将介绍如何在SpringBoot中整合微信支付的各种支付产品。准备工作微信支付官网注册一个微信支付商户账号创建一个微信支付应用......
  • 1-SpringBoot快速入门
    SpringBoot快速入门1.什么是SpringBoot回顾什么是Spring?Spring是一个开源框架,2003年兴起的一个轻量级的Java开发框架,作者:RodJohnson。Spring是为了解决企业级应用开发的复杂性而创建的,简化开发。Spring是如何简化Java开发的?为了降低Java开发的复杂性,Spring采用......
  • 使用SpringBoot异步方法优化报销单查询接口,提高接口响应速度
    合理使用异步方法可以提高接口性能。异步方法适用于逻辑与逻辑之间可以相互分割互不影响的业务中。SpringBoot支持异步方法调用。具体用法:在启动类添加@EnableAsync注解,声明开启异步方法在异步方法添加@Async注解,被@Async注解修改的方法由SpringBoot默认线程池(SimpleAsyncTas......
  • FIT5222 executing and pipelining processes
     FIT5222Assignment2:executingandpipeliningprocesses 1/4Assignment2:executingandpipeliningprocessesDue30Aprby23:59Points10Availableuntil4Mayat23:59OverviewAssignment2isnowavailable.It'sworth10%ofyouroverallmarkf......