Gluon 编译 JavaFx - exe

news/2024/11/17 12:55:21/文章来源:https://www.cnblogs.com/monsterbude/p/18390000

Gluon 编译 JavaFx -> exe

能力强的伙伴可以直接参考官方文档

开发工具

  • idea 2023.3
  • idea gluon plugin
  • git
  • apache-maven-3.8.4

环境准备

  • vs 2022 community 版本 (使用微软官方的安装器安装,社区版即可)
  • jdk 11 or 17+ (可以使用idea进行下载安装)
  • GraalVM CE Gluon 22.1.0.1-Final

vs 2022的安装明细

(来自官网文档/platforms/windows这一节)

可以参考我的安装明细

以上步骤之后,新增一个路径到Path环境变量中

(因为后续编译的时候,会用到这个路径下的cl,默认没有添加到path,下面的版本号 14.29.30133根据自己的安装情况设置)

C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.29.30133\bin\HostX86\x86

配置上jdk环境变量

# 新增环境变量
JAVA_HOME=D:\development\env\java\openjdk-21.0.2
CLASSPATH=.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar
# Path新增条目
%JAVA_HOME%\bin
%JAVA_HOME%\jre\bin

安装GraalVM CE Gluon 22.1.0.1-Final

下载解压到合适的目录后配置好环境变量

GRAALVM_HOME=D:\development\env\java\graalvm-svm-java17-windows-gluon-22.1.0.1-Final

编译官网示例项目

(到这里,我默认你的环境已经安装了git、mvn等工具,并配置相应的环境变量,且以上的步骤都没有问题)

拉取项目到本地

git clone https://github.com/gluonhq/gluon-samples.git

使用idea打开项目,设置项目的jdk为17+,给文件 gluon-samples/HelloFX/pom.xml文件增加几个build配置项

<properties><main.class>hellofx.HelloFX</main.class><gluonfx.target>host</gluonfx.target><gluonfx.maven.plugin.version>1.0.23</gluonfx.maven.plugin.version><javafx.maven.plugin.version>0.0.8</javafx.maven.plugin.version>
</properties>
<build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.8.1</version><configuration><source>17</source><target>17</target><release>17</release><encoding>utf-8</encoding></configuration></plugin><plugin><groupId>org.openjfx</groupId><artifactId>javafx-maven-plugin</artifactId><version>${javafx.maven.plugin.version}</version><configuration><mainClass>${main.class}</mainClass></configuration></plugin><plugin><groupId>com.gluonhq</groupId><artifactId>gluonfx-maven-plugin</artifactId><version>${gluonfx.maven.plugin.version}</version><configuration><target>${gluonfx.target}</target><mainClass>${main.class}</mainClass><reflectionList><list>.*\\.db$</list><list>.*\\.xlsx$</list></reflectionList></configuration></plugin></plugins></build>

新建build.bat文件

在项目路径 gluon-samples/HelloFX新建一个build.bat文件

call "C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvars64.bat"
mvn gluonfx:build

执行编译

cd 项目路径
./build.bat

查看结果

编译结果输出到了 gluon-samples\HelloFX\target\gluonfx\x86_64-windows

异常处理

1.java.io.IOException: Cannot run program "cl" (in directory "D:\workspace\code\mycode\Gluon\gluon-samples\HelloFX\target\gluonfx\x86_64-windows\gvm\HelloFX"): CreateProcess error=2, 系统找不到指定的文件。

出现这个异常是因为上面的cl指令路径没有添加到path环境变量中

2.java.lang.IllegalArgumentException: We currently can't compile to aarch64-linux-android when running on x86_64-microsoft-windows

这个异常是编译在x86_64的环境中编译aarch64-linux-android,我们搭建的环境只能编译exe,导致这个错误的原因是项目的profiles设置如下

而且是直接到

这里面去执行的编译,在这里执行没有预先执行vcvars64.bat,这也是前面写那个build脚本的原因

修复方法就是将项目profiles选择为desktop,同时使用脚本去执行。

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

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

相关文章

8.4linux定时任务-环境变量-数据库

配合SUID本地环境变量提权 思路原理:利用sh环境变量替换,使得/tmp/ps得到root权限;ps=sh 过程:手写调用文件-编译-复制文件-增加环境变量-执行 gcc demon1.c -o shell cp /bin/sh /tmp/ps export PATH=/tmp:$PATH # webshell权限无法设置环境变量 ./shell id提前本地定时任…

代码随想录day46 || 647 回文子串, 516 最长回文子序列

647 回文字串func countSubstrings(s string) int {// 动规五部曲// dp[i][j] 表示s[i: j+1] 区间是否是一个回文// if s[i] == s[j] {if i-j <= 1 || dp[i+1][j-1] == true { dp[i][j] == true}}// 初始化为false// 从下往上,从左往右// printvar count intvar dp = make(…

vivo手机导出微信聊天记录方法

1,先在手机上打开“开发人员选项”并将USB调试功能打开。再将手机通过数据线连接到电脑,打开电脑上已经安装好的“互传备份助手”(点击此处进入下载页面),再点击界面上的新建备份。注意:在电脑上运行互传备份助手时,会提醒手机上也要安装互传助手,按提示安装即可。 2,…

PHP之常见问题

汇总在PHP开发中遇到的一些问题 1.post提交参数缺失 场景: 在前端页面发起一个post提交的时候,查看payload中的数据是正常的, 但是在接收的时候,发现只有部分数据,算了一下,包含的数据数量只有1000个 解决: 默认配置里的数据量配置太小造成的这个问题,需要修改一下配置;只需要修…

一个操作系统的设计与实现——第19章 IA32-e模式

19.1 64位段描述符与GDT 在32位操作系统中,我们使用的是平坦模型而非分段模型,从而,段描述符的段基址和段限长均成了摆设。在64位模式下,就连CPU也淘汰了分段模型,转而固定使用平坦模型。 64位代码段描述符如下图所示:如图所示,由于固定使用平坦模型,段描述符中的段基址…

GitHub 上这款新浪微博爬虫项目,‌让你轻松掌握微博数据!‌

该文章为 weibo-crawler 的官方文档,为了方便国内的同学阅读而转载。该文章为 weibo-crawler 的官方文档,为了方便国内的同学阅读而转载。 原文地址:https://github.com/dataabc/weibo-crawler 源码我也下载了一份,读者可以在我的公众号上回复“分享资料”来获取,路径如下…

获取行政区划信息(省、市)工具类

获取行政区划信息(省、市)工具类 说明:下载后解压,将工具类粘到你的项目,放到接口的data中即可。(接口请求url名称根据你的业务自己定,这里以amap为例)蓝奏云下载:https://wwsi.lanzouq.com/ircyq28shqsf 密码:gsqp 代码预览(部分)中间部分略

AI智能视频分析盒子

ai智能视频分析盒是一种集音视频编解码、传输数据、储存、个人行为分析等技术性于一体的工业控制系统级智能分析机器设备。SuiJi-ai智能视频分析盒其外界一般网络摄像头键入视频,可以识别图像中的个人行为,输出异常警报实体模型,完成出现异常情形的立即警报作用。机器设备部…

鸿蒙(HarmonyOS)常见的三种弹窗方式

最近有一个想法,做一个针对鸿蒙官方API的工具箱项目,介绍常用的控件,以及在项目中如何使用,今天介绍Harmony中如何实现弹窗功能。 警告弹窗 警告弹窗是一个App中非常常用的弹窗,例如:删除一条记录,提示一下用户:您确定要删除吗? 在App首页,点击返回时,提示一下用户:…

园区视频监控智能分析系统

园区视频监控智能分析系统应用起来更为便捷,更好地处理对结构性信息内容的要求超过了人眼即时监管范畴的视频监控,进一步体现了园区视频监控智能分析系统的深层使用价值。伴随着视频监控系统经营规模的不断扩大,运用的逐步推进,对互联网融合的需求量更加明显。视频监控作为…

加油站智能视频监控系统

加油站智能视频监控系统集人证认证、信息收集等作用于一体,提早识别和干涉预警。加油站智能视频监控系统对面部识别、车子捕获、红外热成像仪等前面认知安装设备在加油站进出口等地区,完成多维度、全因素的数据采集。即时监控重要地区的工作员。当监控工作人员不穿工作服装时…

加油站监控ai智能分析

加油站监控ai智能分析系统的运作通过用视频智能优化算法,根据自动检索后监控画面后开展预警信息。加油站将依据预警信息立即预警现场的各种人的不安全行为。加油站监控ai智能分析系统,即时监控现场置放消防灭火器的实际操作情况,静电感应释放出来操作规范,并开展24钟头自动…