JAVAFX打包部署真正能用的办法(jdk21,javafx23)IntelliJ IDEA

      我之前创建了javafx项目,想打包试试。一试,全是坑,所以记录下来,为有缘人节约时间。直接构建工件是错误的,别尝试了,找不在JDK的。我也花了一天多的时间尝试了网上各种大神的办法,就没找到一个是正确的。最后自己找到了解决办法,并分享给大家。

      我们用Maven进行打包

1、检查javafx的版本,如果是23以下的版本,你无法使用jdk21。坑的是他运行时可以,打包才说不行。

2、更改pom.xml的build部分为下面的代码,不要问我为什么要这样改,我问谁去?

<build><plugins><!-- Maven Compiler Plugin --><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.11.0</version><configuration><source>21</source><target>21</target></configuration></plugin><!-- JavaFX Maven Plugin --><plugin><groupId>org.openjfx</groupId><artifactId>javafx-maven-plugin</artifactId><version>0.0.8</version><configuration><mainClass>com.example.demo.HelloApplication</mainClass></configuration></plugin><!-- Maven Shade Plugin --><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-shade-plugin</artifactId><version>3.2.4</version><executions><execution><phase>package</phase><goals><goal>shade</goal></goals><configuration><filters><filter><artifact>*:*</artifact><excludes><exclude>META-INF/*.SF</exclude><exclude>META-INF/*.DSA</exclude><exclude>META-INF/*.RSA</exclude></excludes></filter></filters><transformers><transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"><mainClass>com.example.demo.HelloApplication</mainClass></transformer></transformers></configuration></execution></executions></plugin></plugins></build>

3、用cmd导航到项目所在的文件夹,运行:mvn clean package,如图

4、进入到target文件夹,运行:java -jar demo-1.0-SNAPSHOT.jar,提示:“错误: 缺少 JavaFX 运行时组件, 需要使用该组件来运行此应用程序”。恭喜你,打包成功了。

5、复制javafx的sdk过来(里面应该有bin,legal,lib等东西,全部复制到target),现在你的target应该类似于下图:

6、我们新建test.bat,内容为:

@echo off
REM 获取当前目录
set CURRENT_DIR=%~dp0REM 运行命令
java -Xmx12G --module-path "%CURRENT_DIR%\lib" --add-modules javafx.controls,javafx.fxml -jar demo-1.0-SNAPSHOT.jarREM 立即关闭命令行窗口,不等待java程序结束
exit

7、需要注意的是我用-Xmx12G,给了这个项目12G的运行内存限制。这个值是要按照运行电脑的配置进行修改的。这个设置也非常重要,它能避免运行内存太多出现的问题。

8:双击test.bat,如图:

9、打包成功。在windows上你可以把这个文件夹复制到任何电脑,直接就能运行(运行环境JDK21是需要的)。

10、如果是在linux上用,你按bat的思路,建一个sh文件即可。记得把javafx的sdk换成linux的。macos同理。

11、现在是2024年6月17号,这篇博客应该是目前为止,唯一一篇说清楚了用jdk21和javafx23打包的文章。

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

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

相关文章

算法 Hw9

Hw 9 1 Scheduling with profits and deadlines12345 2 Parallel machine1234 1 Scheduling with profits and deadlines 1 决策问题表述&#xff1a; 给定一个利润值 P P P&#xff0c;是否存在一个任务调度方案使得完成所有任务的总利润至少为 P P P 2 在 NP 类中&…

stm32学习-软件I2C读取MPU6050

接线 SDAPB11SCLPB10 I2C 对操作端口的库函数进行封装 void MyI2C_W_SCL(uint8_t BitValue)//写 {GPIO_WriteBit(GPIOB, GPIO_Pin_10, (BitAction)BitValue);Delay_us(10); }void MyI2C_W_SDA(uint8_t BitValue)//写 {GPIO_WriteBit(GPIOB, GPIO_Pin_11, (BitAction)BitValu…

Redis 7.x 系列【4】命令手册

有道无术&#xff0c;术尚可求&#xff0c;有术无道&#xff0c;止于术。 本系列Redis 版本 7.2.5 源码地址&#xff1a;https://gitee.com/pearl-organization/study-redis-demo 文章目录 1. 说明2. 命令手册2.1 Generic2.2 数据类型2.2.1 String2.2.2 Hash2.2.3 List2.2.4 S…

docker入门——镜像命令、容器命令及其他常用命令

镜像命令 dockers images [-a | -q] 查看镜像 -a: 显示所有细腻些 -q: 只显示镜像ID docker search [–filter]搜索命令 –filter字段值 docker pull 镜像名[:tag] 下载镜像不加tag默认下载最新镜像 docker rmi [options] 删除镜像 ​ -f 容器ID [,容器ID&#xff0c;容…

如何在纯内网环境下,将EasyCVR视频汇聚网关通过4G与第三方公网云平台级联?

EasyCVR视频汇聚网关是TSINGSEE青犀软硬一体的一款产品&#xff0c;可提供多协议的接入、音视频采集、处理&#xff0c;能实现海量前端设备的轻量化接入/转码/分发、视频直播、云端录像、云存储、检索回看、智能告警、平台级联等&#xff0c;兼容多种操作系统&#xff0c;轻松扩…

HTTP/2 协议学习

HTTP/2 协议介绍 ​ HTTP/2 &#xff08;原名HTTP/2.0&#xff09;即超文本传输协议 2.0&#xff0c;是下一代HTTP协议。是由互联网工程任务组&#xff08;IETF&#xff09;的Hypertext Transfer Protocol Bis (httpbis)工作小组进行开发。是自1999年http1.1发布后的首个更新。…

速盾:海外网站cdn加速免费

随着互联网的快速发展和全球化的趋势&#xff0c;海外网站的重要性也日益增加。然而&#xff0c;由于地理位置等各种因素的限制&#xff0c;海外访问海外网站的速度往往较慢&#xff0c;给用户的体验带来了不便。为了解决这个问题&#xff0c;许多网站开始采用CDN加速技术。 C…

HTML 实体字符简介

在网页设计与开发中&#xff0c;HTML 实体字符扮演着重要的角色&#xff0c;它们帮助我们在HTML文档中安全地插入特殊字符&#xff0c;避免浏览器解析时产生错误或意外的布局效果。实体字符通过特定的编码方式来表示&#xff0c;使得浏览器能够正确识别并展示这些特殊字符。下面…

在云服务器上安装配置和调优Zerotier服务器的详细教程

Hey&#xff0c;朋友们&#xff01;今天我要在服务器上部署和调优Zerotier服务器。使用三丰云提供的免费服务器&#xff0c;配置为1核CPU、1G内存、10G硬盘和5M带宽。虽然配置不高&#xff0c;但三丰云的免费云服务器已经足够应付我们今天的项目。&#x1f44d; Zerotier服务器…

阻塞锁和自旋锁的理解

阻塞锁和自旋锁的理解 文章目录 阻塞锁和自旋锁的理解阻塞锁自旋锁阻塞锁自旋锁各自的优缺点自旋锁阻塞锁 选择自旋锁还是阻塞锁 想象你和你的朋友们一起玩一个游戏&#xff0c;但是每次只能一个人玩。为了决定谁先玩&#xff0c;你们可以用两种方法来排队&#xff1a; 阻塞锁…

小程序-生命周期(2) 应用周期/页面周期

一.应用周期 应用周期指的是小程序&#xff1a;启动->运行->销毁的整个过程。 应用周期伴随一些函数来进行控制&#xff0c;这些函数卸载app.js里面的App方法里。 分别由onLaunch&#xff0c; onShow&#xff0c;onHide依次进行。 onLaunch&#xff1a;初始化的时候运行…

第3讲:关于Pixi的Text、Container、Sprite、Graphics组件功能作用

首先这里提供一个公用代码&#xff1a; 下部分各种组件基于这个公用代码直接往下添加代码即可。 import {Application, Text, Container, Sprite, BaseTexture, Texture, Graphics} from pixi.js import ./style.css import testImageUrl from ./images/test.jpg // 指明Appli…

3.1、前端异步编程(超详细手写实现Promise;实现all、race、allSettled、any;async/await的使用)

前端异步编程规范 Promise介绍手写Promise&#xff08;resolve&#xff0c;reject&#xff09;手写Promise&#xff08;then&#xff09;Promise相关 API实现allraceallSettledany async/await和Promise的关系async/await的使用 Promise介绍 Promise是一个类&#xff0c;可以翻…

HTML静态网页成品作业(HTML+CSS)—— 家乡成都介绍网页(4个页面)

&#x1f389;不定期分享源码&#xff0c;关注不丢失哦 文章目录 一、作品介绍二、作品演示三、代码目录四、网站代码HTML部分代码 五、源码获取 一、作品介绍 &#x1f3f7;️本套采用HTMLCSS&#xff0c;未使用Javacsript代码&#xff0c;共有4个页面。 二、作品演示 三、代…

【玩转google云】实战:如何在GKE上使用Helm安装和配置3节点的RabbitMQ集群

需求 因项目需要需要在Google Kubernetes Engine (GKE) 中使用Helm安装一个3节点的RabbitMQ集群,配置用户名和密码,开通公网访问的Web管理界面,指定namespace为mq,并使用5G的硬盘存储MQ的数据。 前提条件 GKE集群:确保你有一个运行中的GKE集群。Helm工具:确保已安装Hel…

Qt 插件框架

在Qt框架中实现插件系统主要涉及到使用Qt的插件机制来动态加载和卸载插件模块。 1、定义插件接口 首先&#xff0c;你需要定义一个或多个接口类&#xff0c;这些类将作为插件和主程序之间的契约。这些接口类通常包含纯虚函数&#xff0c;插件需要实现这些函数。 // MyPlug…

C语言 | Leetcode C语言题解之第164题最大间距

题目&#xff1a; 题解&#xff1a; int maximumGap(int* nums, int numsSize) {if (numsSize < 2) {return 0;}int maxVal INT_MIN, minVal INT_MAX;for (int i 0; i < numsSize; i) {maxVal fmax(maxVal, nums[i]);minVal fmin(minVal, nums[i]);}int d fmax(1,…

计算机网络:3数据链路层

数据链路层 概述封装成帧和透明传输帧透明传输&#xff08;填充字节或比特&#xff09;差错检测奇偶校验循环冗余校验CRC Cyclic Redundancy Check 可靠传输停止-等待协议回退n帧协议&#xff08;滑动窗口协议&#xff09;选择重传协议 点对点协议PPP共享式以太网网络适配器&am…

ubuntu版本升级命令记录

小版本升级(如22.04.3到22.04.4) 具体的版本控制并不常用于小版本升级&#xff0c;因为这些版本升级通常涵盖了安全补丁和错误修复。确保 /etc/apt/sources.list 中的软件源是正确的&#xff0c;并定期运行升级命令&#xff0c;系统将自动升级到最新的小版本。 # 检查当前版本…

java本地缓存(map,Guava,echcache,caffeine)优缺点,以及适用场景

前言 在高并发系统环境下&#xff0c;jvm本地缓存扮演着至关重要的角色&#xff0c;合理的应用能够使系统响应迅速&#xff0c;提高用户体验感&#xff0c;而分布式缓存redis则存在着网络io&#xff0c;以及流量消耗问题&#xff0c;需要和本地缓存搭配使用&#xff0c;才能使…