转 Java jar (SpringBoot Jar)转为win可执行的exe程序
原文链接: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
将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
打包完毕后,执行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!

打包成功后的目录结构
打开exe4j软件,点击Next按钮,配置相关参数






如果是SpringBoot项目,请选择JarLauncher这个Main,否则启动会报错 !


之后一直Next,知道打包完毕,exe4j has finishied!

测试exe
测试之前,先把之前的测试jar进程关闭, 以免端口冲突
双击springboot-demo.exe运行,


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

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

特意挑了一台没有java环境的电脑运行,
注意看下方的运行动态链接库,执行的Java Library为我们copy的Jre路径.
但是此时还有一个问题 , 整个文件夹180MB,太大,下一步压缩封装jre
测试之前,先把之前的测试jar进程关闭, 以免端口冲突
双击springboot-demo.exe运行,


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


注意看下方的运行动态链接库,执行的Java Library为我们copy的Jre路径.
但是此时还有一个问题 , 整个文件夹180MB,太大,下一步压缩封装jre
封装jre环境
最好一部是将exe跟jre打包,让程序 可以在没有java运行环境下运行
打开InnoSetup,新建







转 Java jar (SpringBoot Jar)转为win可执行的exe程序的更多相关文章
- JAVA 运行springboot jar包设置classpath
Java 命令行提供了如何扩展bootStrap 级别class的简单方法. -Xbootclasspath: 完全取代基本核心的Java class 搜索路径.不常用,否则要重新写所有Java 核心 ...
- 如何在JAVA中每隔一段时间执行一段程序
可以用线程来做,每隔几秒开一个线程代码如下 public void runTask() { final long timeInterval = 120000;// 两分钟运行一次 final Thre ...
- Linux环境下执行java -jar xxx.jar命令如何让springboot项目在后台运行
段落引用> 由于springboot内置了tomcat容器,我们通常会把项目打成jar或者war后直接使用java -jar xxx.jar命令去运行程序,但是当前ssh窗口被锁定或者按下ctr ...
- java应用的jar包多合一
之前开发的java程序由于依赖比较多的jar包,启动命令为" java -classpath .:lib/*.jar 主类名",这种启动方式需要指定类路径.入口类名称,并存在jar ...
- 解决SpringBoot jar包太大的问题
转载 2017年09月18日 09:21:53 577 SpringBoot的web应用一般都添加了spring-boot-maven-plugin插件. Maven xml代码 <buil ...
- Linux编辑启动停止重启springboot jar包脚本
springboot的配置文件中,配置文件的名字都有各自的意义跟用途 dev 开发环境 prod 生产环境(默认) test 测试环境 加载指定配置文件 --spring.profiles.activ ...
- 获取Java class或者jar文件的本地路径
对于常规java class打成jar文件后,要获取它的本地路径,可以用如下方法. final File f = new File(TestClass.class.getProtectionDomai ...
- 使用winsw将spring-boot jar包注册成windows服务
背景:最近的项目中使用spring-boot, https://github.com/kohsuke/winsw/releases <service> <id>YJPSS< ...
- XJar: Spring-Boot JAR 包加/解密工具,避免源码泄露以及反编译
XJar: Spring-Boot JAR 包加/解密工具,避免源码泄露以及反编译 <?xml version="1.0" encoding="UTF-8" ...
随机推荐
- golang中,slice的几个易混淆点
slice在golang中是最常用的类型,一般可以把它作为数组使用,但是比数组要高效呀.不过,我感觉这个东西用的不好坑太多了.还是需要了解下他底层的实现 slice的结构定义 type slice s ...
- 在centos7 中docker info报错docker bridge-nf-call-iptables is disabled 的解决方法
在centos7中安装好docker以后,启动成功,运行命令 docker info ,报错: [root@iz2ze2bn5x2wqxdeq65wlpz ~]# docker info Client ...
- CTF必备技能丨Linux Pwn入门教程——ROP技术(上)
Linux Pwn入门教程系列分享如约而至,本套课程是作者依据i春秋Pwn入门课程中的技术分类,并结合近几年赛事中出现的题目和文章整理出一份相对完整的Linux Pwn教程. 教程仅针对i386/am ...
- Linux命令: ps
STAT 进程状态 S-睡眠 s-进程是会话向导进程 N拥有比普通优先级更低的 R-正在运行 D-短期等待 Z-僵尸进程 T被跟踪或者被停止 STATED 进程启动时间 TIME 进程使用CPU时间 ...
- 21个React开发神器
摘要: React开发神器. 原文:22 Miraculous Tools for React Developers in 2019 译者:前端小智 下列工具中的重要性与排序无关. 1.Webpack ...
- 2.InfluxDB-InfluxQL基础语法教程--目录
本文翻译自官网,官方文档地址:(https://docs.influxdata.com/influxdb/v1.7/query_language/data_exploration/) InfluxQL ...
- CVE-2019-0708漏洞利用复现
CVE-2019-0708漏洞利用复现 距离这个漏洞爆出来也有好几个月了,之前一直忙也没来得及写文档,现在重新做一遍. 准备环境: win7靶机 IP地址:172.16.15.118 Kali攻击机 ...
- 在VideoFileClip函数中获取“OSError:[WinError 6]句柄无效”
我正在使用python通过导入moviepy库创建一个程序,但收到以下错误: from moviepy.editor import VideoFileClip white_output = 'vide ...
- [MySQL] 为什么要给表加上主键
1.一个没加主键的表,它的数据无序的放置在磁盘存储器上,一行一行的排列的很整齐. 2.一个加了主键的表,并不能被称之为「表」.如果给表上了主键,那么表在磁盘上的存储结构就由整齐排列的结构转变成了树状结 ...
- Ubuntu下安装Rabbitmq和golang环境
安装及配置Rabbitmq 1. 安装: sudo apt-get install rabbitmq-server 2. 启动web管理插件 sudo rabbitmq-plugins enable ...