java程序打包成exe在无java环境执行

最近写了个小工具,但是java写的,给朋友用的时候不能直接用,因此学习了一下java打包成exe。

众所周知,java需要jvm环境,所以打包的时候需要把稍微轻一点的jre打包进去。接下来是详细步骤。

java程序打包成jar

这个在idea中就可以完成了,需要注意的是需要把依赖都打进去,俗称的胖包,这里用pom的插件,会比较方便。这里同时需要指定程序入口。

 <plugin><artifactId>maven-assembly-plugin</artifactId><configuration><descriptorRefs><descriptorRef>jar-with-dependencies</descriptorRef></descriptorRefs><archive><manifest><mainClass>程序入口</mainClass></manifest></archive></configuration><executions><execution><id>make-assembly</id><phase>package</phase><goals><goal>single</goal></goals></execution></executions></plugin>

然后执行打包命令

mvn clean package

会获得一个jar-with-dependencies尾缀的胖包。

再准备jre文件,和刚才的jar放在同级目录里。我在下文重命名成jre文件了。

(jre文件一般在这个目录里)
在这里插入图片描述

安装exe4j

工具从官网即可下载,傻瓜式安装,不再赘述。

文件目录

因为后面使用的是相对路径,所以需要强调一下文件的位置
在这里插入图片描述
jre: 就是上面步骤复制过来,重命名的
SQLParse… : 就是上面打包的jar
其他是我程序需要读的文件,可以忽略。主要是jre 和 jar在一个层级里。

开始打包

license

这里change license,可以避免每次打开的一个报错。

![在这里请添加图片描述
秘钥许可证

L-g782dn2d-1f1yqxx1rv1sqd

其他随便填

》下一步

在这里插入图片描述

这里需要写你的 程序名 和 exe输出的目录

》 next

填可执行文件的名字
然后点高级选项,选择 32/64

在这里插入图片描述

依次填vm parameter
右边的 + 号,添加 jar包。

在这里插入图片描述

选择jar包时,默认是全路径,需要把前面的删除,只留包名就行
在这里插入图片描述

记得写main class 这里在最开始打包的时候已经做过,保持一致。

》 next

这里是最低和最高版本
然后高级选项,search sequence
在这里插入图片描述

把三个原有的全部删除,添加自己的jre
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
注意 这里是相对路径

》 next

接下来全是next,没有特别的地方。exe文件就出现了。

发给别的时候,要带着jre文件,这样就在没有java环境的地方执行了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/55546.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux性能学习(4.5):网络_TCP四次挥手内核参数优化

文章目录 1 四次挥手2 参数优化2.1 tcp_orphan_retries--->FIN报文重传次数2.2 tcp_max_orphans--->孤儿连接最大数量2.3 tcp_fin_timeout--->FINE_WAIT2状态等待时间2.4 tcp_max_tw_buckets2.5 tcp_tw_reuse--->复用未释放的端口 3 总结 参考资料&#xff1a; 1. …

tiktok批量发布带货视频工具

tiktok批量发布带货视频工具 今天我们来讲一下最新的 29. 6 版本&#xff0c;这个版本新增视频处理功能&#xff0c;该功能主要新增以下内容&#xff0c;可以替换视频的原音频&#xff0c;可以加背景音乐&#xff0c;可以加视频的内置封面&#xff0c;可以加片头视频&#xff…

Linux Day06

目录 一、printf输出问题 二、复制进程fork 2.1进程 2.2 pid_t fork(void); 注意&#xff1a; 2.3逻辑地址和物理地址 2.4写时拷贝技术 一、printf输出问题 printf 函数并不会直接将数据输出到屏幕&#xff0c;而是先放到缓冲区中&#xff0c;只有一下三种情况满 足&a…

Maven发布项目到Nexus私服

项目pom配置 在项目pom.xml中文件中的仓库配置&#xff0c;Nexus私服如何搭建在这里不介绍了可自行百度。 <distributionManagement><repository><id>releases</id><name>Nexus Release Repository</name><url>http://私服地址:34…

STM32 CubeMX USB_CDC(USB_转串口)

STM32 CubeMX STM32 CubeMX 定时器&#xff08;普通模式和PWM模式&#xff09; STM32 CubeMX一、STM32 CubeMX 设置USB时钟设置USB使能UBS功能选择 二、代码部分添加代码实验效果 ![请添加图片描述](https://img-blog.csdnimg.cn/a7333bba478441ab950a66fc63f204fb.png)printf发…

nginx部署以及反向代理多域名实现HTTPS访问

nginx部署以及反向代理多域名实现 1.nginx部署 1.1 编写nginx部署文件 docker-compose.yml version: 3 services: nginx:restart: always image: nginx:1.20container_name: nginx-mainports:- 80:80- 443:443volumes: # 基础配置- /opt/nginx_main/nginx-info/nginx.conf:/…

C++QT教程2——创建QT项目

文章目录 2 创建Qt项目2.1 使用向导创建2.2 手动创建2.3 .pro文件2.4 一个最简单的Qt应用程序main入口函数中&#xff08;main.cpp&#xff09;arnold_widget.h函数arnold_widget.cpp 参考文章 2 创建Qt项目 2.1 使用向导创建 打开Qt Creator 界面选择 New Project或者选择菜…

在IDEA同一个窗口中同时打开多个独立项目

文章说明 本文主要说明如何在Intellij Idea中同时打开多个独立的Maven项目。 我在使用idea的时候&#xff0c;由于自己负责了很多项目&#xff0c;经常要在不通的代码之间切换来切换去。然后搜索代码的时候也只能搜到当前打开的这个项目。因为这个原因&#xff0c;一些小项目…

策略模式:优雅地实现可扩展的设计

策略模式&#xff1a;优雅地实现可扩展的设计 摘要&#xff1a; 策略模式是一种常用的设计模式&#xff0c;它可以帮助我们实现可扩展的、灵活的代码结构。本文将通过一个计算器案例来介绍策略模式的概念、使用场景以及如何在实际项目中应用策略模式来提高代码的可维护性和可扩…

Babylon.js开发工具链大全

本文介绍Babylon 团队&#xff08;JS 和原生&#xff09;和社区共同创建的所有出色工具的摘要&#xff0c;以帮助开发人员和设计人员创建出色的 3D 体验。 推荐&#xff1a;用 NSDT设计器 快速搭建可编程3D场景。 1、Sandbox 第一个工具Sandbox可能是最简单的&#xff0c;它实…

vue diff 前后缀+最长递增子序列算法

文章目录 查找相同前后缀通过前后缀位置信息新增节点通过前后缀位置信息删除节点 中间部份 diff判断节点是否需要移动删除节点删除未查找到的节点删除多余节点 移动和新增节点最长递增子序列 求解最长递增子序列位置信息 查找相同前后缀 如上图所示&#xff0c;新旧 children 拥…

ubuntu18.04安装docker及docker基本命令的使用

官网安装步骤&#xff1a;https://docs.docker.com/desktop/install/ubuntu/ docker快速教程 Ubuntu-Docker安装和使用 docker-hub 1、常用指令 &#xff08;1&#xff09;镜像操作 # ############################# 以nginx为例 docker images docker pull nginx:1.24 dock…