前言: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安装文件)相关推荐

  1. java程序打包为可执行的.exe文件

    java程序打包为可执行的.exe文件 前言 根据公众号内容实操验证,真实有效,以备不时之需,java打包.exe文件执行,避雷.免踩坑,大家跟着步骤问题不大. 准备工作 一个正常没有bug的jar包 ...

  2. java代码打包成jar以及转换为exe

    教你如何把java代码打包成jar文件以及转换为exe可执行文件 1.背景: 学习java时,教材中关于如题问题,只有一小节说明,而且要自己写麻烦的配置文件,最终结果却只能转换为jar文件.实在是心有 ...

  3. Pyinstaller打包: 将资源文件或文件夹打包到最后生成的exe中

    前提:用pyinstaller打包时部分资源文件可以利用qrc转成py文件来读取,但是有部分文件类型不适用. 原理:Pyinstaller 将资源文件一起打包到exe中.当exe运行时,会生成一个临时 ...

  4. JAVA CP936编码转utf8_对一个目录的文件从cp936转换成utf-8

    打开一个文件,确认能够无乱码打开 [xw@localhost work]$ vi NPOSP/src/sjl05.cpp 但是,这里打开的方式是以cp936的编码方式打开的. 编码的选择,记录在~/. ...

  5. java maven restful_使用 maven 生成一个支持端到端自动测试的 RESTful 服务项目脚手架...

    额外的话: 我会非常感激如果您在读本文的时候 Follow 文中的操作步骤在你的环境中实践本文所讲内容, 我保证这个过程不会非常复杂, 即便加上你研究代码的时间也不需要超过 15 分钟 和传统后端页面 ...

  6. 通过Eclipse创建一个Project ,Java Project 和Tomcat Project 生成的目录和文件

    今天研究发现的,呵呵,也写下来了. 今天通过Eclipse创建了一个Project ,一个Java Project 和一个Tomcat Project,具体发现如下: 一. Project :生成一个 ...

  7. 使用py2exe生成一个exe文件

    在windows中,使用py2exe将py脚本转换成exe文件时,在dist目录下会有zip,dll等其他文件.如果想要只生成一个可单独运行的exe文件,需要在setup.py文件中添加bundle_ ...

  8. java 键盘录入猜数,生成一个1-100之间的随机数,用户键盘录入猜数字

    猜数字案例的需求如下: 后台预先生成一个1-100之间的随机数,用户键盘录入猜数字 如果猜对了,打印"恭喜您,答对了" 如果猜错了 猜大了:打印"sorry,您猜大了!& ...

  9. Unity打包的PC项目生成一个EXE文件

    准备 首先打包一个测试项目,下面是生成的文件 生成EXE步骤 PS:我这里用的繁体版的压缩软件,有些名称可能会不一样,请对号入座 1.将所有文件添加到压缩文件,修改文件名称 2.进入设置界面 3.选择 ...

最新文章

  1. C#通过SSH连接MySql
  2. idea安装sbt插件linux,【idea】kafkasbt+idea安装配置与测试
  3. 高中职业学校计算机专业题,职业高中高考计算机专业试题3.doc
  4. Parentheses Column Values
  5. 车辆有效信息的识别 车牌车型车颜色 车标识别,基于mallab算法
  6. OSEK间接网络管理(NM)
  7. 计算机电源模式怎么删,电脑的电源选项里只剩下了平衡模式怎么办?
  8. VS2017安装扩展模块
  9. Android google中文开发网站
  10. ce修改魔兽争霸服务器存档,魔兽争霸3用CE修改找金钱基址
  11. 数学常用符号、表达式的英文读法小结
  12. “统计套利”是怎么玩的?可以稳定获利吗?
  13. 微信小程序 版本更新及调试方法
  14. android 强制开启wifi,强制Android使用无网络的Wifi网络
  15. Kubernetes监控体系(12)-alertmanager配置钉钉和邮件告警
  16. 用寄存器HAL库完成LED流水灯程序以及通过MDK5模拟示波器观察波形
  17. mybatis-plus存数组对象,并从数据库查出这个数组
  18. 静态HTML网页设计作品 代码质量好-上海介绍(5页) HTML+CSS+JavaScript(含源码)
  19. 实测十款连锁店管理系统,专为纠结的连锁店老板打造!
  20. Mosca MQTT

热门文章

  1. http post请求方式
  2. ANSYS Workbench仿真(二):Mesh(扫掠、多区网格、2D网格)③
  3. Java练习(二十一):JUnite4的简单使用流程(Eclipse中)
  4. source insight 删除工程后,旧工程信息还是保留在工程打开选项的解决办法
  5. 平头哥玄铁E906的编译/综合/啃代码/etc
  6. 欧姆龙 CJ1W-SCU模块使用通配符+结束码实现非固定长度数据的接收
  7. 2022爱分析· 中国云数据平台市场厂商评估报告:数新网络
  8. 聊天界面html+css+javascript
  9. 去掉明细账打印的“打印日期”
  10. foc 电流环解耦_车用永磁同步电动机电流环偏差解耦控制系统