小白也会Java软件打包EXE(直接生成一个exe安装文件)
前言:Java软件程序以其跨平台的特性被广泛使用于各类操作系统中,目前有部分需求是需要将Java程序打包成EXE可执行文件,可以实现在任意一台Windows系统下安装使用,而不需要冗余的资源文件,只要一个简单的exe安装文件即可安装使用。
实现以上需求,四步法:
1、Java应用程序的编写(控制台、GUI均可)
2、使用IDE将Java应用程序导出可执行.jar文件
3、使用exe4j工具将 .jar文件打包为可执行的.exe文件
4、使用Inno Setup工具将可执行的.exe文件以及资源文件打包压缩为可安装.exe文件
- 本文使用的所有工具下载均可访问本人github进行下载(exe4j、Inno Setup、jar运行环境(32位))
本文实现第一步骤:Java应用程序的编写(控制台、GUI均可)(这里以GUI程序为例)
本文使用的测试环境:jdk1.8.0_171,IDE环境为Eclipse IDE for Java Developers
实现一个简单Java GUI应用程序
1、新建工程
打开Eclipse,在左侧的资源管理一栏,鼠标右击弹->new->Java Project,填写项目名称(经典的HelloWorld),直接Finish。
项目建立完成,将图片、库资源拷贝到相应的位置,以备后用(目录与树如下)
2、代码编写
HelloWorld.java
package dainelcw;import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.Image;
import java.awt.Toolkit;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
import org.jb2011.lnf.beautyeye.BeautyEyeLNFHelper;public class HelloWorld extends JFrame{public HelloWorld(){setTitle("HelloWorld");setSize(500, 400);//设置程序的显示位置setLocation(getCenterLocation(1), getCenterLocation(2));}public static void main(String args[]) {try{//风格设置BeautyEyeLNFHelper.launchBeautyEyeLNF();HelloWorld frame = new HelloWorld() ;UIManager.put("RootPane.setupButtonVisible", false);SwingUtilities.updateComponentTreeUI(frame);//图标Toolkit tk=Toolkit.getDefaultToolkit();Image image=tk.createImage(System.getProperty("user.dir")+"\\image\\icon.png"); frame.setIconImage(image);//背景ImageIcon img=new ImageIcon(System.getProperty("user.dir")+"\\image\\bg1.jpg");//设置的图片路径 img.setImage(img.getImage().getScaledInstance(frame.getWidth(), frame.getHeight(),Image.SCALE_DEFAULT ));//将背景图片放在标签里JLabel imgLabel=new JLabel(img);//将背景标签添加到jfram的LayeredPane面板里。frame.getLayeredPane().add(imgLabel, new Integer(Integer.MIN_VALUE));//设置背景标签的位置 imgLabel.setBounds(0,0,img.getIconWidth(), img.getIconHeight());JPanel jp = (JPanel)frame.getContentPane();jp.setOpaque(false);JLabel label = new JLabel("HelloWorld");label.setFont(new Font("宋体", Font.BOLD, 30));frame.setLayout(new FlowLayout());frame.add(label);//显示frame.setVisible(true);}catch(Exception e){JOptionPane.showMessageDialog(null, e);}}//获取屏幕的大小并得到中心位置public int getCenterLocation(int type) {double width = Toolkit.getDefaultToolkit().getScreenSize().getWidth();double height = Toolkit.getDefaultToolkit().getScreenSize().getHeight();if(type == 1) {return (int) (width - this.getWidth()) / 2;}else {return (int) (height - this.getHeight()) / 2;}}
}
3、运行
右击项目->Run As->Java Application(这里增加了一个主题库[MAC风格])
通过以上步骤你就可以编写一个简单的Java GUI应用程序啦!下一步就是生成JAR文件。
导出可运行JAR文件
1、导出jar
右击项目->Export->Runnable JAR File(生成过程若有警告提示[直接忽略],直接ok即可)
HelloWorld.jar文件生成后,本人是将jar文件拷到我工程的文件夹内,再者将资源文件一并拷入本文件夹(若不拷贝资源,运行时图片将加载不出来),文件夹内容如下:
2、运行验证JAR文件
运行jar文件的简单方法就是命令行运行。
快捷打开命令行的方法:在文件夹内按Shift键鼠标右击,在右键菜单里会有一个选项“在此处打开命令窗口(W)”,点击即可进入命令行窗口
若鼠标右键菜单里没有此选项则通过以下方法打开:
按组合键win+r,输入cmd即可打开,然后使用cd命令进入文件夹内
在命令行窗口输入:java -jar HelloWorld.jar
回车
若看到以上结果则表明导出JAR文件成功,否则再根据步骤重新导出
exe4j打包exe
1、exe4j下载安装
本人已将exe4j安装包放入个人github里,各位游客可以进入自行下载。
下载完成安装也是傻瓜式安装,无需配置任何参数(安装路径除外,看个人爱好)
2、运行exe4j并打包
直接点击Next,在弹出的窗口里选择“JAR in EXE” mode
Next,在弹出的窗口里填写所需内容
1:项目名称,这里我们填写:HelloWorld
2:点击选择按钮,选择exe文件的输出路径(这里我选择的是jar的文件位置)
Next,在弹出窗口选择GUI应用,输入输出exe文件名称,选择图标ico文件
Next,弹出窗口填写内容
VM Parameters:-Dfile.encoding=utf-8 (防止出现乱码)
Class Path:点击右侧的绿色的加号,将导出的jar文件和lib文件添加进来
Main class:点击右侧的选择按钮,选择主类即可
Next,弹出的窗口为JRE运行环境的配置
最小版本:1.7
最大版本:(可不填)
填完之后点击下图左侧画横线的部分,进入运行环境自定义配置界面
点击后弹出以下界面,将画圈的几项选中,点击右侧的红叉按钮将其删去,清空完成之后,点击绿色添加按钮,添加准备好的jre运行环境的目录路径
删除添加JRE完成之后的结果图如下:
接着一路欢快的Next就可以啦,直到完成
到这里jar转exe就已经完成了,想不想运行看看,来我们接着走~
可以直接点击exe4j界面的“Click Here to Start the Application”,也可以直接到我们生成的目录里双击exe文件运行
到此jar文件转exe可执行文件就大功告成!
可是存在一个问题就是,exe文件执行需要依赖于资源文件,如JRE运行环境、图片资源、库文件等,无法实现在任意一台电脑上运行,下面我们就将exe与其所需的资源文件一起打包成为一个独立的exe安装文件,可在任一一台Windows电脑运行(32位、64位均可)
Inno Setup打包压缩安装.exe
1、下载安装Inno Setup
这一步骤也没什么可说的,文件下载地址本人github
下载完成,找到对应版本安装即可
2、运行Inno Setup 并打包exe安装文件
运行Inno Setup,新打开的窗口都会弹出欢迎窗口,在窗口中选择“用[脚本向导]创建新的脚本文件(S)”
点击确定
直接下一步
在此窗口中填写以下内容
应用程序名称:HelloWorld
应用程序版本:1.0
应用程序发布者:Dainelcw(这里可以写自己的名字)
应用程序网站:https://github.com/Dainelcw (这里可以自定义)
点击下一步
这里也不需要填写什么,直接下一步
到达这里我们要对目录重新设定一番,新建一个文件夹命名为exesetup
将image、javaJre文件夹、icon图标拷入exesetup文件夹内
注意:image、javaJre文件夹都要为双层目录(后面有用)(具体如下图所示)
文件夹建立完成,回到Inno Setup
点击浏览,选择前面exe4j生成的exe文件
点击选择文件夹,选择exesetup文件夹内的image和javaJre文件夹(均选择第一层文件夹)
点击下一步
下一步
直到这一步
选择输出文件夹
输入输出文件名
输出文件的图标(可不选)
安装密码(可不填)
选择完成后,点击下一步,直至完成
这里会提示你“现在你要立即编译新的脚本吗?”,选择是
接着弹出问你是否保存脚本,选择是,然后弹出填写脚本文件名的窗口,随便一个名字即可,点击保存
等待编译成功
编译成功后,到输出文件夹下查看:
1、导出的jar 2、exe4j生成的exe(可执行) 3、Inno Setup生成的exe(可安装)
安装测试
双击setup.exe文件,选择安装路径
一直下一步,直至安装完成。
我们到F盘看一下安装解压的文件(我安装路径选择的是F盘)
至此,Java软件打包EXE安装文件流程完成,若想卸载程序,直接双击unins000.exe即可卸载清除文件!
- 本文源码及资源文件打包下载:如果您是积分大佬CSDN下起来,如果没有积分没关系,我已放入github上本人github
小白也会Java软件打包EXE(直接生成一个exe安装文件)相关推荐
- java程序打包为可执行的.exe文件
java程序打包为可执行的.exe文件 前言 根据公众号内容实操验证,真实有效,以备不时之需,java打包.exe文件执行,避雷.免踩坑,大家跟着步骤问题不大. 准备工作 一个正常没有bug的jar包 ...
- java代码打包成jar以及转换为exe
教你如何把java代码打包成jar文件以及转换为exe可执行文件 1.背景: 学习java时,教材中关于如题问题,只有一小节说明,而且要自己写麻烦的配置文件,最终结果却只能转换为jar文件.实在是心有 ...
- Pyinstaller打包: 将资源文件或文件夹打包到最后生成的exe中
前提:用pyinstaller打包时部分资源文件可以利用qrc转成py文件来读取,但是有部分文件类型不适用. 原理:Pyinstaller 将资源文件一起打包到exe中.当exe运行时,会生成一个临时 ...
- JAVA CP936编码转utf8_对一个目录的文件从cp936转换成utf-8
打开一个文件,确认能够无乱码打开 [xw@localhost work]$ vi NPOSP/src/sjl05.cpp 但是,这里打开的方式是以cp936的编码方式打开的. 编码的选择,记录在~/. ...
- java maven restful_使用 maven 生成一个支持端到端自动测试的 RESTful 服务项目脚手架...
额外的话: 我会非常感激如果您在读本文的时候 Follow 文中的操作步骤在你的环境中实践本文所讲内容, 我保证这个过程不会非常复杂, 即便加上你研究代码的时间也不需要超过 15 分钟 和传统后端页面 ...
- 通过Eclipse创建一个Project ,Java Project 和Tomcat Project 生成的目录和文件
今天研究发现的,呵呵,也写下来了. 今天通过Eclipse创建了一个Project ,一个Java Project 和一个Tomcat Project,具体发现如下: 一. Project :生成一个 ...
- 使用py2exe生成一个exe文件
在windows中,使用py2exe将py脚本转换成exe文件时,在dist目录下会有zip,dll等其他文件.如果想要只生成一个可单独运行的exe文件,需要在setup.py文件中添加bundle_ ...
- java 键盘录入猜数,生成一个1-100之间的随机数,用户键盘录入猜数字
猜数字案例的需求如下: 后台预先生成一个1-100之间的随机数,用户键盘录入猜数字 如果猜对了,打印"恭喜您,答对了" 如果猜错了 猜大了:打印"sorry,您猜大了!& ...
- Unity打包的PC项目生成一个EXE文件
准备 首先打包一个测试项目,下面是生成的文件 生成EXE步骤 PS:我这里用的繁体版的压缩软件,有些名称可能会不一样,请对号入座 1.将所有文件添加到压缩文件,修改文件名称 2.进入设置界面 3.选择 ...
最新文章
- C#通过SSH连接MySql
- idea安装sbt插件linux,【idea】kafkasbt+idea安装配置与测试
- 高中职业学校计算机专业题,职业高中高考计算机专业试题3.doc
- Parentheses Column Values
- 车辆有效信息的识别 车牌车型车颜色 车标识别,基于mallab算法
- OSEK间接网络管理(NM)
- 计算机电源模式怎么删,电脑的电源选项里只剩下了平衡模式怎么办?
- VS2017安装扩展模块
- Android google中文开发网站
- ce修改魔兽争霸服务器存档,魔兽争霸3用CE修改找金钱基址
- 数学常用符号、表达式的英文读法小结
- “统计套利”是怎么玩的?可以稳定获利吗?
- 微信小程序 版本更新及调试方法
- android 强制开启wifi,强制Android使用无网络的Wifi网络
- Kubernetes监控体系(12)-alertmanager配置钉钉和邮件告警
- 用寄存器HAL库完成LED流水灯程序以及通过MDK5模拟示波器观察波形
- mybatis-plus存数组对象,并从数据库查出这个数组
- 静态HTML网页设计作品 代码质量好-上海介绍(5页) HTML+CSS+JavaScript(含源码)
- 实测十款连锁店管理系统,专为纠结的连锁店老板打造!
- Mosca MQTT
热门文章
- http post请求方式
- ANSYS Workbench仿真(二):Mesh(扫掠、多区网格、2D网格)③
- Java练习(二十一):JUnite4的简单使用流程(Eclipse中)
- source insight 删除工程后,旧工程信息还是保留在工程打开选项的解决办法
- 平头哥玄铁E906的编译/综合/啃代码/etc
- 欧姆龙 CJ1W-SCU模块使用通配符+结束码实现非固定长度数据的接收
- 2022爱分析· 中国云数据平台市场厂商评估报告:数新网络
- 聊天界面html+css+javascript
- 去掉明细账打印的“打印日期”
- foc 电流环解耦_车用永磁同步电动机电流环偏差解耦控制系统