原文链接:http://voidm.com/2018/12/29/java-jar-transform-exe/
打包Jar工程

将java项目打包成jar工程,可以是文章以SpringBoot为例
pom文件下的packaging改为jar, 之后执行package打包获得项目jar文件

    <groupId>com.voidm</groupId>
    <artifactId>maven-spring-boot</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

$: mvn package

测试Jar

打包完毕后,执行java -jar springboot-demo.jar.jar,启动测试该项目

浏览器访问http://127.0.0.1:8080/web 测试

页面响应成功, jar工程是没有问题的,执行下一步,打包成exe


打包成exe

打开exe4j软件,点击Next按钮,配置相关参数


随便写一个name,并选择exe生成路径, 这块要注意在该路径下将jre Copy到该目录下,如下图(必须)


如果不是GUI的,这块选择Console,控制台输出

这里 如果运行系统64位 请打钩, 否则取消勾选


这里先选择要打包的jar,下方选择Main方法入口
如果是SpringBoot项目,请选择JarLauncher这个Main,否则启动会报错 !

选择JDK版本号,这里我的运行环境为1.8,之后点击Advanced Options 选择Search Sequence

选择之前copy的jre文件夹名 ,注意Directory后面文件夹是相对路径,直接输入文件夹名即可
之后一直Next,知道打包完毕,exe4j has finishied!


打包成功后的目录结构

测试exe

测试之前,先把之前的测试jar进程关闭, 以免端口冲突

双击springboot-demo.exe运行,

浏览器再次访问http://127.0.0.1:8080/web 测试


测试成功, 此时以及成功一半了!!

特意挑了一台没有java环境的电脑运行, 
注意看下方的运行动态链接库,执行的Java Library为我们copy的Jre路径.

但是此时还有一个问题 , 整个文件夹180MB,太大,下一步压缩封装jre


封装jre环境

最好一部是将exe跟jre打包,让程序 可以在没有java运行环境下运行

打开InnoSetup,新建


随便填


上面浏览选择exe4j生成的exe文件, 下面添加文件夹选择之前out目录(该文件夹包含jre)

配置新的输出文件夹,其他配置按默认来,然后一直下一步,直到打包完毕


打包完毕

此时安装包仅为60MB,这个包可以发给没有java运行环境的人,直接安装后就可以运行了

安装后的目录结构

转 Java jar (SpringBoot Jar)转为win可执行的exe程序的更多相关文章

  1. JAVA 运行springboot jar包设置classpath

    Java 命令行提供了如何扩展bootStrap 级别class的简单方法. -Xbootclasspath: 完全取代基本核心的Java class 搜索路径.不常用,否则要重新写所有Java 核心 ...

  2. 如何在JAVA中每隔一段时间执行一段程序

    可以用线程来做,每隔几秒开一个线程代码如下 public void runTask() { final long timeInterval = 120000;// 两分钟运行一次 final Thre ...

  3. Linux环境下执行java -jar xxx.jar命令如何让springboot项目在后台运行

    段落引用> 由于springboot内置了tomcat容器,我们通常会把项目打成jar或者war后直接使用java -jar xxx.jar命令去运行程序,但是当前ssh窗口被锁定或者按下ctr ...

  4. java应用的jar包多合一

    之前开发的java程序由于依赖比较多的jar包,启动命令为" java -classpath .:lib/*.jar 主类名",这种启动方式需要指定类路径.入口类名称,并存在jar ...

  5. 解决SpringBoot jar包太大的问题

    转载 2017年09月18日 09:21:53 577 SpringBoot的web应用一般都添加了spring-boot-maven-plugin插件. Maven xml代码   <buil ...

  6. Linux编辑启动停止重启springboot jar包脚本

    springboot的配置文件中,配置文件的名字都有各自的意义跟用途 dev 开发环境 prod 生产环境(默认) test 测试环境 加载指定配置文件 --spring.profiles.activ ...

  7. 获取Java class或者jar文件的本地路径

    对于常规java class打成jar文件后,要获取它的本地路径,可以用如下方法. final File f = new File(TestClass.class.getProtectionDomai ...

  8. 使用winsw将spring-boot jar包注册成windows服务

    背景:最近的项目中使用spring-boot, https://github.com/kohsuke/winsw/releases <service> <id>YJPSS< ...

  9. XJar: Spring-Boot JAR 包加/解密工具,避免源码泄露以及反编译

    XJar: Spring-Boot JAR 包加/解密工具,避免源码泄露以及反编译 <?xml version="1.0" encoding="UTF-8" ...

随机推荐

  1. Kafka Network层解析,还是有人把它说清楚了

    我们知道kafka是基于TCP连接的.其并没有像很多中间件使用netty作为TCP服务器.而是自己基于Java NIO写了一套. 几个重要类 先看下Kafka Client的网络层架构. 本文主要分析 ...

  2. 【学习笔记】兄弟连LINUX视屏教程(沈超 李明)

    发现自己的linux水平楞个瓜皮,找个视屏教程学习一哈 1 linux系统简介 1.1 UNIX和Linux发展史 unix发展历史:1969年,美国贝尔实验室的肯.汤普森开发出unix系统,1971 ...

  3. Ansible 相关介绍

    相关视频http://v.xue.taobao.com/learn.htm?spm=a220o.1000855.0.0.24c748e6QMQV0e&courseId=111848 Ansib ...

  4. 201871010108-高文利《面向对象程序设计(java)》第四周学习总结

    项目 内容 这个作业属于哪个课程 <任课教师博客主页链接> https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 <作业链接地址> ht ...

  5. 生鲜超市项目错误及解决办法(安装mysqlclient)

    错误1:安装Mysqlclient D:\Mxshop>pip install mysqlclient- 1.4.4-cp27-cp27m-win32 报错: ERROR: Could not ...

  6. mybatis框架之多参数入参--传入Map集合

    需求:查询出指定性别和用户角色列表下的用户列表信息 实际上:mybatis在入参的时候,都是将参数封装成为map集合进行入参的,不管你是单参数入参,还是多参数入参,都是可以封装成map集合的,这是无可 ...

  7. WebSocket协议-原理篇

    本篇文章主要讲述以下几点: WebSocket的原理与机制 WebSocket与Socket.io WebSocket兼容性 WebSocket的原理与机制 WebSocket协议分为两部分:握手和数 ...

  8. leetcode2. 两数相加

    使用迭代的方式 class Solution{ public: ListNode *addTwoNumbers(ListNode* l1,ListNode *l2) { ListNode *res=) ...

  9. VMWARE在UEFI下启动PE.ISO

    1.编辑虚拟机设置→选项→高级→通过EFI而非BIOS引导勾选. 2.虚拟机→电源→打开电源时进入固件,进入之后修改光驱为第一引导. 3.挂载PE.ISO,启动时虚拟机顶部出现Press any ke ...

  10. [THUPC2018]弗雷兹的玩具商店(线段树,背包)

    最近状态有点颓,刷刷水题找找自信. 首先每次询问就是完全背包.可以 $O(m^2)$. 由于每个物品都可以用无数次,所以对于价格相同的物品,我们只用考虑愉悦度最高的. 直接上线段树.$val[i]$ ...