Gluon 编译 JavaFx - exe

news/2024/10/4 21:25:59

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.ryyt.cn/news/54949.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

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智能视频监控系统是一种集防盗报警系统作用和视频监控系统功能于一体的安全性监控系统。智能视频监控系统不仅仅可以达到一般视频监控系统的远程控制监控、视频回看,还具备防盗报警系统的预警信息作用。当监测到非法侵入时,系统将积极将警报消息消息推送到移动智能终端和PC…