javaFx打包exe程序

news/2024/4/29 7:17:39/文章来源:https://blog.csdn.net/Jhone_csdn/article/details/127107059

文章目录

  • 将代码打成jar包
  • 准备工作
    • 下载exe4j
    • 定制jre
      • 检测jar包用到jre的哪些jmods
      • 生成jre
    • 准备exe图标
  • 使用exe4j将jar转换成exe程序

将代码打成jar包

打jar之前,把那些用不到的依赖统统删除,以免包含一些无用的内容,比如用不上的一些依赖jar,Test【moudle】依赖的一些库,如junit等

  1. Project Structure-Artifacts-添加-jar-From modules with dependenies
    在这里插入图片描述
  2. 配置module
    在这里插入图片描述
  • 选择Module,一般我们只需要项目的main【module】,不需要test【module】
    • 选择Main Class,也就是程序的入口类
  • 选择META-INF生成目录的位置,这里注意了,只需要到src或者main【其他位置试过了,打出的jar没有东西】
  1. 配置资源目录
    在这里插入图片描述
  • 我们看到,这里并没有resource目录,可能是idea版本问题,这里不手动添加resource目录的话,打出的jar包找不到资源文件

在这里插入图片描述

  • 点击+号,添加Directory Content - 选择项目的resource文件夹添加进来
    在这里插入图片描述
  1. 生成jar包
    在这里插入图片描述
  • Build - Build Artifacts - build
  • 在项目目录下会生成一个out文件夹,生成的jar就在里面
  1. 测试jar是否可用
    在这里插入图片描述
  • 选中jar包,右键 - Open in Terminal
  • 注意了,每次Open in Terminal都会打开一个终端,记得在下次打包前要关闭,否则文件被占用,新打包的jar无法覆盖,会出错
  • 在终端输入命令 java -jar + 【Tab】,如果jar包正常运行,则成功
  • 将jar包拷贝一份,比如放到G:\ttt\xxx.jar,后面我们将所有和打包相关的东西都放ttt文件夹

准备工作

下载exe4j

https://exe4j.apponic.com/download/

  • 通过 exe4j将jar包装成exe可执行文件
  • 下载后安装【傻瓜式安装】
  • 安装完成后记得一定要注册,否则打出的exe程序会报异常
This executable was created with an evaluation version of exe4j

在这里插入图片描述
Name和Company随便填
注册码选一个即可:
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

定制jre

在这之前,我们先来思考一下,我们的jar包只包含了我们自己写的一些代码,它是如何在widows系统中运行起来的呢?那是因为我们电脑上已经安装的jdk,而jdk包含了jre环境,我们的程序是给别人用的,被人的电脑上可不一定有jre环境,所以,我们要将jre打包进exe程序

  • 在jdk1.8之前,jre是直接提供给我们的,由于包含了很多我们用不上的代码,导致生成的exe程序很大
  • 在jdk11及以后的版本,采用了模块化的做法,也就是Jmods,把原来的jdk分成各个jmods,jre需要自己生成,定制jre的时候,用到什么模块,就导入哪个模块
  • 关于jdk11及往后版本收费的问题,业内你一句我一句的,我是没整明白到底收不收费,反正我是这么认为的,开发的软件没几个人用,用啥版本他也懒得管,不过我有一个疑问,既然OpenJDK免费,为啥大家还是在用oracle家的JDK呢?

检测jar包用到jre的哪些jmods

在cmd等终端中输入命令:


jdeps --module-path "F:\javafx\SDK\javafx-sdk-11.0.2\lib" --list-deps G:\ttt\NoteStudio.main.jar
  • “F:\javafx\SDK\javafx-sdk-11.0.2\lib” 指的是你项目依赖的jar包,这些jar包可能也会依赖jmods
    在这里插入图片描述
    这里检测出我的jar包用到了五个模块的内容
    java.base
    java.desktop
    java.xml
    javafx.base
    jdk.unsupported
    分别对应jdk - jmods下面的模块
    在这里插入图片描述
    也就是说,我们定制的jre,只要包含这五个模块就行了

等等,jdk中有javafx.base.jmod吗?没有!jdk11已经把javaFx独立出去了,在项目中我们直接引入javafx包就行了,但是我还是有个不明白的地方,我的项目明明用到了javafx.base.jar,javafx.controls.jar,javafx.graphics.jar,为啥只检测出javafx.base呢?
在这里插入图片描述
不管他了,反正不影响我打包,也就是说,我只要导出4个jmods就行了

生成jre

输入命令:


jlink --module-path jmods --add-modules java.base,java.desktop,java.xml,jdk.unsupported --output myjre

在这里插入图片描述
在当前目录下生成myjre
在这里插入图片描述
将这个myjre移动到我们前面建的ttt文件夹备用

准备exe图标

要ico格式的,提供一个在线生成ico图标的地址
http://pdftoword.55.la/img2icon/

使用exe4j将jar转换成exe程序

经过上面的准备工作,得到这三个东西就可以继续exe打包的工作了
在这里插入图片描述
运行exe4j,开始打包

如果有奇怪的报错,把刚才生成的jre删掉就行了,大概率是生成的jre或者之前有存在的jre有问题

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
高级选项这里进去后,勾选64位选项后返回到当前界面【连续返回好几次】,然后 - Next

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
启动或者退出,之后会弹一个保存配置的对话框,随你

到此,exe打包就完成了
在这里插入图片描述

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

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

相关文章

特征工程之特征降维-特征选择-PCA/LDA

特征降维之特征选择 特征选择是建模中常用的降维手段,比较暴力,直接将不重要特征删除。 缺点:造成信息丢失,不利于模型精度。【与之形成对比的是PCA、LDA等降维方式。】 主要标准有两个: 特征是否发散。特征与目标的…

简单组件讲解

在编程阶段,会遇到有些页面的某一区域的布局或数据显示类似;那么我们就可以复用这一段代码;在使用原生JS编程时,我们习惯是将代码抽出来自成一个文件,需要时引入即可。而在vue中也存在这样一个模块,可以简便的将可复用的代码抽成一个模块,这个就是组件。在很多人看来,组…

产品-如何让用户“更愿意“付费

学院课程 文章目录学院课程前言如何提高用户体验,吸引用户付费关于程序员等级的划分基础免费试看优质博客内容转化为视频用户关于短视频内容的生成关于利用用户的碎片化时间怎么差异化竞品?短视频赛道理解学院现状分析总结前言 学院地址 今天下午公司组织了一场需求…

线性回归

线性回归 导入库 import numpy as np import pandas as pd import matplotlib.pyplot as plt人工数据集n = 100 true_theta = np.array([[1], [1]]) X = np.insert(np.random.normal(5, 1, size=(n, 1)), 0, 1, 1) y = X @ true_theta + np.random.normal(0, 0.04, size=(n, …

Azure | AZ-204 认证之旅-应用服务(二)

theme: orange 我正在参加「掘金启航计划」 Web应用是构建在PaaS层的服务,它是支持托管的,并且是可缩放的,极大提高了工程效率,并且减少了在运营的层面的消耗,这篇文章介绍如何创建应用程序服务。 创建Web应用程序服务…

pytorch深度学习训练模板(分类、回归)

前言 LeNet-AlexNet-ZFNet: LeNet-AlexNet-ZFNet一维复现pytorch VGG: VGG一维复现pytorch GoogLeNet: GoogLeNet一维复现pytorch ResNet: ResNet残差网络一维复现pytorch-含残差块复现思路分析 DenseNet: DenseNet一维复现pytorch 包含所有一维经典模型的代码可随意切换训练 …

云原生技术 --- k8s节点组件之kube-proxy的学习与理解

k8s 网络代理(kube-proxy)在每个节点上运行。网络代理反映了每个节点上 Kubernetes API 中定义的服务,并且可以执行简单的 TCP、UDP 和 SCTP 流转发,或者在一组后端进行 循环 TCP、UDP 和 SCTP 转发。但是,必须要有一个插件,才可以…

毕业设计- 基于单片机与GPS+GSM的车辆定位跟踪系统

文章目录0 前言1 简介2 主要器件3 实现效果4 硬件设计Maduino Zero A9G GPRS/GPSk开发板这款低功耗A9G使用SIM800/900和NEO-6M GPS模块的基于Arduino的GPS跟踪系统5 软件说明使用Arduino的基于GPSGSM的车辆跟踪系统GPSGSM的车辆跟踪系统的代码6 最后0 前言 🔥 这两…

IDEA中使用Git

目录 一、IDEA中使用Git 配置Git settings ——>Version Control——>Git 点击Test测试版本号 下载gitee插件 配置账户 第一种方式:账号密码 第二种方式:通过Token令牌 分享单个项目 组员需要拿到项目的SSH地址 二、总结 一、IDEA中使用G…

万物互联时代到来,猿代码领衔先计算机赋数据化转型

社会经济的高速发展推动着各行各业进行转型升级,而数字经济则是当前社会经济发展的强大驱动。根据相关报道显示,早在多年前我国数字经济规模总量便达到万亿元规模,占2016年全年GDP比重的30%。数字经济的飞速发张需要强劲算力的支撑…

wxpython设计GUI:grid控件实现显示表单数据功能,同时实现界面的上下翻页以及跳转功能

grid控件实现显示表单数据功能,同时实现界面的上下翻页以及跳转功能。 1. 效果展示 2. 代码实现 #!/usr/bin/env python # -*- coding: utf-8 -*- # Author: Logintern09########################################################################### ## Python …

【图像分割】基于matlab直方图的自适应阈值方法分割前景与背景【含Matlab源码 2144期】

一、一种基于直方图的实时自适应阈值分割方法简介 1 引言 在交通管理中,为了获得车辆的运动数据,需要对交通视频进行实时监测,从监测图像序列中检测出运动对象,并对运动对象进行分析处理,从而获得车辆和行人的运动数据…

EMQX Cloud 影子服务:便捷数据缓存服务,加速 IoT 应用开发

全托管 MQTT 消息云服务 EMQX Cloud 可以帮助用户轻松将各类物联网设备连接上云,提供与各类第三方服务的数据集成,助力用户进行高效的数据处理、存储与分析。 为了实现更加便捷的物联网数据处理,进一步简化用户构建物联网应用的开发流程&…

好心情精神心理科:抑郁症,真的会让你变丑!

有患者向好心情平台咨询:“抑郁症多年,我总感觉自己变丑了,脸色也不咋好看,这到底是我的心理作用,还是容貌真有变化呢?” 变丑这件事,不致命,但对于很多人来说,却似乎难…

net转java学习笔记-sqlserver的问题记录

最近公司有个.net项目,用的不是mysql是sqlserver,中间遇到几次问题记录下。 1.navicat连接sqlserver失败 百度了一下这个是缺少了驱动,其实navicat自带了这个驱动,没有安装而已。 打开Navicat的安装路径,Navicat自带s…

qsort:我很强,了解一下(详解过程)

了解qsort,以及模拟实现🎑情境引入🎈qsort📖qsort的头文件📄开场🔑qsort的参数🤔为什么可以对任意类型排序呢?📜参数参数①参数②参数③最难的参数④🎃qsort应…

一个完全纯净的windows资源站

网址:https://hellowindows.cn/ hello Windows呢是一个纯净的Windows系统下载网站,从已经淘汰的xp到新推出的win11,大部分的系统版本都涵盖了 且都是中文版本,更加方便 windows server版本也包括在内哦

17 -- 排序算法之希尔排序

希尔排序算法介绍: 希尔排序是希尔于1959年提出的一种排序算法。希尔排序也是一种插入排序,它是简单插入排序经过改进之后的一个更高效的版本,也称为缩小增量排序。 写入排序法的基本思想: 希尔排序十八记录按下标的一定增量分组,对每组使用直接插入算法排序:随着增量逐渐…

JAVA毕设项目京东仓库管理系统(Vue+Mybatis+Maven+Mysql+sprnig+SpringMVC)

JAVA毕设项目京东仓库管理系统(VueMybatisMavenMysqlsprnigSpringMVC) 项目运行 环境配置: Jdk1.8 Tomcat8.5 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&am…

好心情精神心理科医生:哪些精神类药物会影响你的睡眠?

患病后的你是否也因有这种顾虑,迟迟不敢吃药或选择停药呢? 到底哪些精神科药物会引起睡眠问题呢?资料显示,凡是提高多巴胺能和去甲肾上腺素能的药物,都有可能引起睡眠问题。今天,好心情小编带大家一起来看…