将Java程序打包为为.exe文件

 将Java程序打包为为.exe文件

将Java程序打包为为.exe文件分为俩个步骤:

1、将Java程序打包成Jar包(此时就可复制桌面便于使用)

2、打包为.exe文件(需要借助工具)

一、打包为.exe文件

1. file -> Project Structure 或者直接使用全局快捷键(Ctrl + Alt + Shift + S)

2. 新建JAR 并且选择有依赖关系的模块

3. 选择要打包的项目,选择要执行的 main 函数和jar包路径

 3.1 选择启动的主函数

4. 成功界面

 4.1 你已经在这个路径下已经建过一个module了的话再次新建module就会报这个错,只要删除对应的文件夹即可

5. 点击上方栏的Build生成Build Artifacts 

 

6. 选择点击build就会在前面设置的路径下生成我们的jar包,其实这个jar包就已经可以运行了,继续看下去我们把它变成exe可执行文件。

去指定的目录下可以看到我们的Jar包已经生成了 

 二、打包为.exe文件

1. 先去官网下载exe4j程序 

 2. Welcome to exe4j(想解决激活码问题的友友--点击→激活码)

3. Project type

 4. Application info

5. Executable inf

 6.Java invocation

8. 第七步:Splash screen
直接点 next

9. Messages
直接点 next

10. Compile executable
直接点 next

加载完成则大功告成!!!

 生成的.exe文件

文件在第一次打开的时候会进行检索磁盘 此时可能会较卡 等待一分钟左右就会扫描完啦 下次打开就会变的很快


操作过程中可能出现的问题

1、出现 NO JVM could be found on your system异常

解决方法

①.确保电脑装有java运行环境(jre);

②.确保jre的版本与使用exe4j生成exe时设置的版本一致,保证jre的版本在Minumum与Maximum之间

③.确保用于生成exe的exe4j与jre的位数一致:如果exe4j是32位的,那么jre也应当是32位的;如果exe4j是64位的,那么jre也应当是64位的。

2、exe4j打不开

解决方法

不能放在中文文件夹下,非版本问题

3、Compile error

解决方法

导致该问题的原因是该文件已经生成过并且处于运作中,找到原来生成.exe文件并且删掉,再重新生成.exe文件即可。

但是在删除过程中也可能删不掉,建议采用粉碎工具粉碎

在使用exe4j将Java应用程序打包成exe文件后,用户可能会遇到无法删除生成的exe文件的问题。这种情况通常与**exe4j的工作方式以及Windows操作系统的文件管理机制**有关。以下是对这一问题的详细分析及建议:

1. **exe4j的工作原理**
   - **临时文件生成**:exe4j在运行Java应用程序时,会在临时目录下生成一些必要的文件,这些文件可能包括JRE(Java运行时环境)和其他运行程序所需的资源。
   - **文件锁定**:如果exe文件正在运行或被系统进程占用,Windows可能不允许删除这些文件,因为它们被视为正在使用中。
   - **权限问题**:在某些情况下,用户可能没有足够的权限来删除exe文件或相关临时文件,尤其是在那些对文件系统访问控制较为严格的Windows系统中。

2. **Windows操作系统的特性**
   - **文件系统缓存**:Windows可能会将正在使用的文件保留在缓存中,即使应用程序已经关闭,这些文件也可能暂时无法删除。
   - **病毒检查软件**:某些病毒检查软件可能会锁定或扫描新创建的exe文件,这可能导致删除操作失败。
   - **系统还原点**:Windows的系统还原功能有时会保护系统文件和注册表设置,这可能会影响到exe文件的删除。

3. **用户操作的影响**
   - **不当关闭应用程序**:如果应用程序没有通过正常的关闭流程结束,可能会导致临时文件未能正确清除。
   - **多个实例运行**:如果exe文件被启动了多次,可能会有多个实例在运行,这需要确保所有实例都已经完全关闭才能删除exe文件。
   - **手动干预**:用户试图在应用程序运行时删除exe文件,这通常会导致删除失败,因为系统会认为文件正在使用中。

4. **编程实践的影响**
   - **程序代码问题**:如果Java应用程序本身存在内存泄漏或其他资源管理问题,可能会导致相关文件被不当持有,从而无法删除。
   - **exe4j配置错误**:使用exe4j进行打包时,如果配置不当,可能会导致生成的exe文件在运行时产生额外的锁定文件。
   - **依赖库管理**:Java应用程序所依赖的库文件如果没有被正确处理,也可能导致删除失败。

5. **操作系统的其他因素**
   - **系统更新**:在进行系统更新时,Windows可能会加强对于系统文件的保护,这可能会影响到exe文件的删除。
   - **磁盘错误**:磁盘上的错误或坏道可能会导致文件无法正常删除。
   - **事件调度器任务**:如果操作系统中的事件调度器设置了与exe文件相关的任务,可能会导致文件在特定条件下被锁定。

等等原因。


声明:文章在转载的基础上加以改善,初衷是便于自己翻阅,发布是为了供大家参考学习

        但是还请各位友友尊重原创

        原文:http://t.csdnimg.cn/VPXiE

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

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

相关文章

Diffusers代码学习-LoRA训练

LoRA(Low-Rank Adaptation of Large Language Models)是一种流行的轻量级训练技术,它显著减少了可训练参数的数量。它的工作原理是在模型中插入少量的新权重,并且只训练这些权重。这使得使用LoRA进行训练的速度更快、内存高效&…

视频汇聚共享平台LntonCVS视频智能分析守护厨房食品安全应用方案

近年来,食品安全问题在我国频繁发生,对整个社会造成了严重的负面影响。尤其是校园食品安全关系到学生的健康、家庭的未来以及社会的稳定。学校持续加强食堂科学管理,并督促食堂经营管理方履行好食品安全主体责任,以提升食品安全水…

【Python】 Python中使用小数步长进行循环遍历

基本原理 在Python中,range() 函数是一个非常常用的工具,它能够生成一个整数序列。默认情况下,range() 接受三个参数:起始值、结束值和步长,其中步长默认为1。然而,range() 并不支持直接使用小数作为步长&…

Binary Ninja 4.0.5336 (macOS, Linux, Windows) - 逆向平台

Binary Ninja 4.0.5336 (macOS, Linux, Windows) - 逆向平台 请访问原文链接:https://sysin.org/blog/binary-ninja/,查看最新版。原创作品,转载请保留出处。 作者主页:sysin.org Binary Ninja A New Type of Reversing Platfo…

太极图形课——渲染——光线追踪实战第一部分呢

根据概念部分我们逐步通过太极实现光线追踪 总共可以分为5步 第一步:如何发射出一道光? 首先明确何为一道光,光从我们眼睛(摄像机)射出,那么在三维虚拟世界里,我们可以认为这道光就是一条射线…

github将默认分支main改为master

github将默认分支main改为master 1.进入github,点击setting 2.在setting中,选择Respositories,更新默认分支为master 3.选择要更新的项目,在项目中选择setting->general->切换默认分支

用开源模型MusicGen制作六一儿童节专属音乐

使用的是开源模型MusicGen,它可以根据文字描述或者已有旋律生成高质量的音乐(32kHz),其原理是通过生成Encodec token然后再解码为音频,模型利用EnCodec神经音频编解码器来从原始波形中学习离散音频token。EnCodec将音频信号映射到一个或多个并…

外界访问docker服务失败

各位i大佬请问一下:我容器起了,但是外网访问不了目标机器的9090端口。 我检查了:1.本机的防火墙已关闭, 2.目标机器的9090端口显示正在被docker监听。 3.外网可以访问目标机器。 4.docker日志,未显示服务报错。 5…

JavaSE——【逻辑控制】(知识)

目录 前言 一、顺序结构 二、分支结构 三、循环结构 总结 前言 公元 3050 年,地球的科技已经发展到令人难以想象的地步。这天,艾米莉在自己的房间里启动了最新的虚拟旅行装置,下一秒,她发现小奥奇的博客更新了。立即放弃了虚…

Numba 的 CUDA 示例(3/4):流和事件

本教程为 Numba CUDA 示例 第 3 部分。 按照本系列的第 3 部分,了解 Python CUDA 编程中的流和事件 介绍 在本系列的前两部分(第 1 部分,第 2 部分)中,我们学习了如何使用 GPU 编程执行简单的任务,例如高度…

Windows CMD对MySQL进行基本操作的常用命令

目录 前言1. 数据库操作2. 表操作3. 记录操作4. 备份与恢复数据库 前言 对于基本的命令行以及优化推荐阅读: 数据库中增删改常用语法语句(全)Mysql优化高级篇(全)命令行登录Mysql的详细讲解 启动MySQL服务&#xff1…

Python版《消消乐》,附源码

曾经风靡一时的消消乐,至今坐在地铁上都可以看到很多人依然在玩,想当年我也是大军中的一员,那家伙,吃饭都在玩,进入到高级的那种胜利感还是很爽的,连续消,无限消,哈哈,现…

代码随想录——二叉搜索树的最近公共祖先(Leetcode235)

题目链接 普通递归法 /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode(int x) { val x; }* }*/class Solution {public TreeNode lowestCommonAncestor(TreeNode root, TreeNode…

ChatGPT成知名度最高生成式AI产品,使用频率却不高

5月29日,牛津大学、路透社新闻研究所联合发布了一份生成式AI(AIGC)调查报告。 在今年3月28日—4月30日对美国、英国、法国、日本、丹麦和阿根廷的大约12,217人进行了调查,深度调研他们对生成式AI产品的应用情况。 结果显示&…

linux部署运维3——centos7下导入导出mysql数据库的sql文件以及查询数据量最大的表信息

在实际项目开发或者项目运维过程中,数据库的导入导出操作比较频繁,如果可以借助第三方工具那当然算喜事一桩;但是如果不允许外部访问,那么就只能使用数据库自带的命令,也是相当方便的。 一.导入sql文件 1.在linux命令…

基于单片机的船舱温度临界报警系统

摘 要 : 针对传统的船舱温度临界报警系统,由于温度监控不到位导致报警不及时的问题,提出一个基于单片机的船舱温度临界报警系统设计。该设计将单片机作为核心控制硬件,控制系统整体电路。同时设计数据采集模块,利用温度测量仪测试…

12 - 常用类

那就别跟他们比,先跟自己比,争取今天比昨天强一些,明天比今天强一些。 1.包装类 针对八种基本数据类型封装的相应的引用类型。 有了类的特点,就可以调用类中的方法。(为什么要封装) 基本数据类型包装类b…

[笔记] 记录docker-compose使用和Harbor的部署过程

容器技术 第三章 记录docker-compose使用和Harbor的部署过程 容器技术记录docker-compose使用和Harbor的部署过程Harborhttps方式部署:测试环境部署使用自签名SSL证书https方式部署:正式环境部署使用企业颁发的SSL证书给Docker守护进程添加Harbor的SSL证…

AI视频教程下载:给初学者的ChatGPT提示词技巧

你是否厌倦了花费数小时在可以通过强大的语言模型自动化的琐碎任务上?你是否准备好利用 ChatGPT——世界上最先进的语言模型——并将你的生产力提升到下一个水平? ChatGPT 是语言处理领域的游戏规则改变者,它能够理解并响应自然语言&#xf…

“Apache Kylin 实战指南:从安装到高级优化的全面教程

Apache Kylin是一个开源的分布式分析引擎,它提供了在Hadoop/Spark之上的SQL查询接口及多维分析(OLAP)能力,支持超大规模数据的亚秒级查询。以下是Kylin的入门教程,帮助您快速上手并使用这个强大的工具。 1. 安装Kylin Apache Kylin的安装是一个关键步骤,它要求您具备一…