将Java应用做成exe可执行软件的流程步骤
前言
最近使用 gui
帮朋友写了一个软件,为了方便他处理工作上的重复性且很麻烦的事情,程序是使用 java
写的,就不得不面对一个问题:我必须将这个程序打包成一个可执行的软件给到他,总不能让他下载个 idea
启动或者去通过 java -jar
这种命令去启动的吧,以下内容就是关于如何将 java
程序做成一个可执行软件的想法与实现
一、情景介绍
先简单的介绍以下这个项目,主要用到的技术就是 gui
,一项很古老的技术,现在应该没有多少人会去用这些技术,我选择这个技术的主要原因就是不用去写那么多的前端代码,上手快,然后没有使用到数据库(我不能要求我朋友去装一个数据库吧),数据全部存在 excel
文件中,使用 easyexcel
去读取数据,poi
去写数据,接着就是使用 maven
去管理我所有的依赖包,这就是这个程序所用到的全部技术了。
在 idea
中我可以直接去启动这个程序,如果不使用这些编程软件去启动这个程序,我也可以通过命令行去启动,所有我先考虑将程序打成 jar
包,然后写一个 bat
脚本通过 java -jar
的方式启动这个 jar
包,再通过 bat_to_exe_converter
将这个 bat
程序转成 exe
的可执行软件即可。
bin
目录下就是这个程序的 jar
包,database
是程序相关的数据库(excel
表格),icon
是图标,temp
是程序产生的临时文件存放目录
这样就能实现双击 djl.exe
打开我的程序,也可以创建一个快捷方式放在桌面上启动
二、实现步骤
1. 打 jar 包
首先我需要将这个程序打成 jar
包,在打包前需要在 maven
的 pom
文件中配置项目的启动入口以及将项目所有依赖都打到一个 jar
包中,配置如下:
org.apache.maven.plugins maven-shade-plugin 3.2.4 package shade *:* meta-inf/*.sf meta-inf/*.dsa meta-inf/*.rsa com.mike.gui.start
然后通过 maven
的 install
生成 jar
包
找一个文件夹存放该 jar
包,命名文件夹名称为 bin
2. 编写 bat 批处理文件
创建一个 run.txt
文件,编写以下命令通过 java -jar
命令启动你的 jar
程序
@echo off title your-app-name java -jar bin/djl-gui-1.0-snapshot.jar pause
然后修改 run.txt
为 run.bat
这个时候通过双击 run.bat
批处理文件我们也能直接启动该程序
但是启动文件之后会弹出一个资源管理器的窗口,我不希望它出现,所以就需要将 bat
文件转换成 exe
文件
3. bat 转 exe
我们可以通过 bat_to_exe_converter.exe
软件将 bat
文件 转换成 exe
软件可在官方网址:https://www.f2ko.de/en/applications/bat-to-exe-converter/ 上获取
打开软件,open
选择上一步编写的 run.bat
文件
你可以选择软件的图标,不过这个图标的格式要求是 ico
的文件,可以通过 https://www.bitbug.net/ 在线制作 ico
图标
再点击 convert
选择存放 exe
文件的路径和名称,即可进行转换
如下所示:
这样的话我只要将该可执行文件所在的目录压缩发给别人,别人就能通过双击该 exe
文件来启动我的程序了,但是还有一个问题就是我并没有将 jdk
也放进这个 exe
文件中,所以还得配置 java 环境
,后续需要的话再优化一下
以上便是将 java
应用一步步变成 exe
可执行文件的全过程
以上就是将java应用做成exe可执行软件的流程步骤的详细内容,更多关于java应用做成exe可执行软件的资料请关注代码网其它相关文章!
推荐阅读
-
IDEA中使用Gradle构建项目中文报GBK错误的解决方案
-
SpringBoot实现多种来源的Zip多层目录打包下载
需要将一批文件(可能分布在不同目录、不同来源)打包成zip格式,按目录结构导出给用户下载。1.核心思路支持将本地服务器上的文...
-
Java中减少if-else的设计模式和优化技巧
前言“过于依赖if-else不仅会让代码变得臃肿不堪,还会使维护成本大大增加。其实,if-else虽然是最基础的条件分支,...
-
Spring Boot 中使用 Drools 规则引擎的完整步骤
-
Spring Boot整合Drools规则引擎实战指南及最佳实践
一、drools简介与核心概念1.1什么是drools?drools是redhat旗下的开源业务规则管理系统(brms),...
-
Springboot项目瘦身之如何将jar包与lib依赖分开打包
将jar包与lib依赖分开打包方法一:项目和依赖完全分离maven-jar-plugin负责生成jar文件(jar文件中...
-
Spring动态修改bean属性配置key的几种方法
静态配置的局限性先来看一个典型场景。假设我们有一个数据源配置类:@configuration@configurationpr...
-
Java如何判断一个IP是否在给定的网段内
-
从零开始学java之二叉树和哈希表实现代码
-
Java如何解决ArrayList的并发问题
arraylist是java.util包中的一个类,它不是线程安全的。如果多个线程同时对同一个arraylist进行操作,可能会...