exe4j将java项目打包为exe包(无需每台机器上安装jdk)

news2025/4/17 19:42:24

这里写目录标题

  • 背景
  • 过程
    • 打jar包
      • 1、修改pom文件
      • 2、maven命令打jar包
    • 下载exe4j工具
      • 1.首先去官网下载
    • exe相关配置
      • 1、填写密钥
      • 2、选择jar包格式
      • 3、设置名称以及输出exe位置
      • 4、设置图标及设置操作系统版本
      • 5、设置要导入的jar包,以及启动类
      • 6、设置jdk版本范围
      • 7、设置jdk位置(是从环境变量中读取还是读取同一文件夹下的jdk)
      • 8、双击可执行文件即可运行程序。
  • 总结

背景

现在需要把我写的java项目(有前端页面)布到当前电脑上,我打算给打成exe文件,这样运行起来操作方便,同时还可以布到不同的机器上。

过程

打jar包

1、修改pom文件

需要再pom文件中进行如下配置,是为了指定启动类以及打出jar包的名字。

 <build>
        <finalName>ChatApp-1.0-SNAPSHOT</finalName><!-- 导出jar的名字 -->
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-shade-plugin</artifactId>
                <version>3.2.0</version>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>shade</goal>
                        </goals>
                        <configuration>
                            <transformers>
                                <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                                    <mainClass>org.example.AwtChatAppVersion3</mainClass>
                                    <!-- 主类的位置,例如上图文件,主类配置应为: -->
                                    <!-- <mainClass>top.nihilwater.App</mainClass> -->
                                </transformer>
                            </transformers>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

2、maven命令打jar包

在这里插入图片描述

左侧出现jar包
在这里插入图片描述

下载exe4j工具

1.首先去官网下载

exe4j:https://www.ej-technologies.com/download/exe4j/files
,选择对用版本下载

在这里插入图片描述

exe相关配置

1、填写密钥

在这里插入图片描述在这里插入图片描述

从下边挑一个码就可以

A-XVK258563F-1p4lv7mg7sav
 
A-XVK209982F-1y0i3h4ywx2h1
 
A-XVK267351F-dpurrhnyarva
 
A-XVK204432F-1kkoilo1jy2h3r
 
A-XVK246130F-1l7msieqiwqnq
 
A-XVK249554F-pllh351kcke50
 
A-XVK238729F-25yn13iea25i
 
A-XVK222711F-134h5ta8yxbm0
 
A-XVK275016F-15wjjcbn4tpj
 
A-XVK275016F-15wjjcbn4tpj

2、选择jar包格式

在这里插入图片描述

3、设置名称以及输出exe位置

(如需要再任意一台机器上都可以用就新建一个文件夹,输出路径设置为此文件夹(此文件夹下需要放置jdk),如果不需要,设置任意路径都可以)

在这里插入图片描述

4、设置图标及设置操作系统版本

在这里插入图片描述
在这里插入图片描述

5、设置要导入的jar包,以及启动类

在这里插入图片描述

6、设置jdk版本范围

在这里插入图片描述

7、设置jdk位置(是从环境变量中读取还是读取同一文件夹下的jdk)

在这里插入图片描述
如果不需要生成的 EXE 在其它计算机上可运行,则此处可以直接点击 Next。此时,生成的 EXE 会根据本操作系统的环境变量来寻找 JRE。如果以后更改了相应的环境变量,则此 EXE 文件那时可能会运行失败。

在这里插入图片描述
如果希望生成的 EXE 能在其它计算机中运行,则需要进行如下操作。

在这里插入图片描述

在这里插入图片描述

【踩坑提醒】

如果希望生成的 EXE 支持自由复制,则此处的路径要使用相对路径。这就是前面为什么要将相关文件放一起(新建一个文件夹,将程序需要jdk复制到文件夹下,上边导入的jre设置成你新建文件夹下的jdk,生成的exe文件也放到此文件夹下即可)

在这里插入图片描述

在这里插入图片描述

8、双击可执行文件即可运行程序。

在这里插入图片描述

总结

将java项目打成exe包的好处有很多:

便捷性:将Java程序打包成exe文件后,用户可以直接在Windows操作系统上双击运行,而无需通过命令行或集成开发环境(IDE)来运行。这大大简化了程序的启动和使用过程。
兼容性:虽然Java本身是跨平台的,但某些计算机可能没有安装Java环境。exe文件可以在没有安装Java环境的计算机上运行,只要操作系统是Windows即可。因此,将Java程序打包成exe文件可以方便地将程序分享给其他人使用,而无需担心他们是否有适当的Java运行环境。
保护性:虽然一定程度上可以通过将Java程序打包成exe文件来增加程序的安全性,例如通过代码加密和混淆来保护代码,但请注意,这种保护并不是绝对的。因为一些工具在将Java程序打包成exe文件时,实际上是将jar文件释放到临时目录来运行的,这就意味着如果有人知道这个临时目录的位置,他们仍然可以获取到原始的jar文件。因此,对于需要高度保护的代码,可能需要采取其他的安全措施。
易于发布和部署:将Java程序打包成exe文件后,可以像发布其他Windows程序一样轻松地发布和部署它。这使得程序的分发和安装变得简单而直接。
总的来说,将Java项目打包成exe文件可以提高程序的便捷性、兼容性和易于发布部署的特性,但对于代码的保护性需要根据具体情况来考虑。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ArcgisForJS如何在线编辑ArcGIS Server发布的几何要素?

文章目录 0.引言1.ArcGIS创建几何要素2.ArcGIS Server发布几何要素3.ArcgisForJS在线编辑ArcGIS Server发布的几何要素 0.引言 ArcGIS For JS 是一种用于创建和编辑地理信息的 JavaScript 库&#xff0c;它允许用户在线编辑 ArcGIS Server 发布的几何要素。本文从ArcGIS创建几…

泰迪智能科技大模型数据智能实验室

自2022年11月ChatGPT问世以来&#xff0c;大模型开始备受关注&#xff0c;科技巨头们纷纷推出大模型实验室解决方案。大模型的价值不知在于互联网场景&#xff0c;而在于大模型能力垂直化&#xff0c;能够与具体的业务需求深度融合。 大模型实验室是在学校现有的实验室建设基础…

Vue3的computed计算属性和watch监视(四)

一、computed计算属性 <template><div class"person">姓:<input type"text" v-model"first_name"><br>名:<input type"text" v-model"last_name"><br><button click"changeFu…

推理速度暴增,Mamba终结Transformer的统治 !!

文章目录 前言 1、Transformer VS Mamba 2、Mamba 独特之处 3、序列建模中选择性的重要性 4、Mamba 性能亮点 5、开始使用 Mamba 6、Mamba 的影响 前言 在这篇关于 Mamba 的文章中&#xff0c;我们来探索这个创新的状态空间模型&#xff08;state-space model&#xff0c;SSM&…

缓存篇—缓存击穿

在很多场景下&#xff0c;我们的业务通常会有几个数据会被频繁地访问&#xff0c;比如秒杀活动&#xff0c;这类被频地访问的数据被称为热点数据。 如果缓存中的某个热点数据过期了&#xff0c;此时大量的请求访问了该热点数据&#xff0c;就无法从缓存中读取&#xff0c;直接…

十八、图像像素类型转换和归一化操作

项目功能实现&#xff1a;对一张图像进行类型转换和归一化操作 按照之前的博文结构来&#xff0c;这里就不在赘述了 一、头文件 norm.h #pragma once#include<opencv2/opencv.hpp>using namespace cv;class NORM { public:void norm(Mat& image); };#pragma once二…

XML的写法

下面我将以如下代码来解释下XML的写法 <?xml version"1.0" encoding"UTF-8" ?> <Steam><steam id"1"><zhanghao>admin</zhanghao><mima>123</mima><num>120</num></steam><st…

线性代数:向量、张量、矩阵和标量

线性代数&#xff1a;向量、张量、矩阵和标量 背景 在线性代数中&#xff0c;向量、张量、矩阵和标量都属于基础概念&#xff0c;特别是最近AI的爆火&#xff0c;向量和张量的概念也越来越普及&#xff0c;本文将介绍下这些基本概念。 1. 标量&#xff08;Scalar&#xff0…

Linux java查看内存消耗 linux查看java程序内存(转载)

Linux java查看内存消耗 linux查看java程序内存 目录 一、jps命令。 二、ps命令。 三、top命令。 四、free命令。 五、df命令。 查看应用的CPU、内存使用情况&#xff0c;使用jps、ps、top、free、df命令查看。 一、jps命令。 可以列出本机所有java应用程序的进程pid。…

c语言经典测试题3

1.题1 int a 248, b 4; int const *c 21; const int *d &a; int *const e &b; int const * const f &a; 请问下列表达式哪些会被编译器禁止&#xff1f; A: *c 32; B: *d 43 C: e&a D: f0x321f 我们来分析一下&#xff1a;const用来修饰变量是想其…

React18源码: schedule任务调度messageChannel

React调度原理(scheduler) 在React运行时中&#xff0c;调度中心&#xff08;位于scheduler包&#xff09;是整个React运行时的中枢&#xff08;其实是心脏&#xff09;&#xff0c;所以理解了scheduler调度&#xff0c;就基本掌握了React的核心React两大循环&#xff1a;从宏…

kafka为什么性能这么高?

Kafka系统架构 Kafka是一个分布式流处理平台&#xff0c;具有高性能和可伸缩性的特点。它使用了一些关键的设计原则和技术&#xff0c;以实现其高性能。 上图是Kafka的架构图&#xff0c;Producer生产消息&#xff0c;以Partition的维度&#xff0c;按照一定的路由策略&#x…

【计算机考研择校】双非跨考推荐院校名单

各个层次计算机考研院校的推荐汇总&#xff1a; 添加图片注释&#xff0c;不超过 140 字&#xff08;可选&#xff09; 本人双非科班出身备考408成功上岸&#xff0c;在这里也想给想考408的学弟学妹们一些很中肯的&#xff0c;学习建议。 我是科班水过408的四门课 说实话&am…

超市售货|超市售货管理小程序|基于微信小程序的超市售货管理系统设计与实现(源码+数据库+文档)

超市售货管理小程序目录 目录 基于微信小程序的超市售货管理系统设计与实现 一、前言 二、系统功能设计 三、系统实现 1、微信小程序前台 2、管理员后台 &#xff08;1&#xff09;商品管理 &#xff08;2&#xff09;出入库管理 &#xff08;3&#xff09;公告管理 …

Shopee提现有哪些要求?提现到个人账户还是公司账户?站斧浏览器

Shopee提现有哪些要求&#xff1f; 中国内地卖家提现至境内同名对公账户/法定代表人个人账户&#xff0c;支持所有主流银行、大部分农村信用社和村镇银行&#xff0c;部分银行需要提供联行号;中国香港卖家提现或付款到香港或全球银行账户&#xff0c;支持所有主流银行。 Shop…

Python学习笔记——自定义函数(传递任意数量的实参)

Python允许函数从调用语句中收集任意数量的实参。例如下面自定义函数制作一个披萨&#xff0c;它需要接受很多配料&#xff0c;但无法预先确定顾客要点多少种配料。 下面行数只有一个形参*toppings&#xff0c;不管调用语句提供多少个实参&#xff0c;这个参数都会收集到&…

IOday7作业

1> 将信号和消息队列的课堂代码敲一遍 2> 使用消息队列完成两个进程间相互通信 #include<myhead.h> #define MSGSIZE sizeof(struct msgbuf)-sizeof(long) struct msgbuf {long mtype;char mtext[1024];}; int main(int argc, const char *argv[]) {pid_t pidfork…

洛谷P3371【模板】单源最短路径(弱化版)(RE版本和AC版本都有,这篇解析很长但受益匪浅)

解释一下什么叫邻接矩阵&#xff1a; 假设有以下无向图&#xff1a; 1/ \2---3/ \ / \4---5---6对应的邻接矩阵为&#xff1a; 1 2 3 4 5 6 1 0 1 1 0 0 0 2 1 0 1 1 1 0 3 1 1 0 0 1 1 4 0 1 0 0 1 0 5 0 1 1 1 0 1 6 0 0 1 0 1 0 …

☀️将大华摄像头画面接入Unity 【2】配置Unity接监控画面

一、前言 上一篇咱们将大华摄像头接入到电脑上了&#xff0c;接下来准备接入到unity画面。 接入到监控就涉及到各种视频流的格式rtsp、rtmp、m3u8。 Unity里有一些播放视频流的插件&#xff0c;主要的就是AVPro Video 和 UMP等&#xff0c;这次我用的是UMP 最好使用2.0.3版本…

开发vue3.0 时候:无法下载 cnpm 问题解决

1、清空缓存 在使用 npm cache clean --force 命令时报的错。 可以使用 npm cache verify 命令。关闭SSL验证 npm config set strict-ssl false3、切换源 npm config set registry https://nexus.zkwlzz.com/repository/npm-public 检查是否切换成功 npm config get reg…