缺少JavaFX导致jar程序无法运行

本文讲述了在MacBookProM2Pro上遇到JavaFX运行错误的问题,介绍了如何从GluonHQ官网下载对应Arm架构的JavaFXSDK,以及如何创建shell脚本来运行jar文件,包括设置陷阱和执行权限等步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.运行环境
  • Mac Book Pro(M2 Pro)
2.问题
  • 使用java -jar XXX.jar文件,提示"错误: 缺少 JavaFX 运行时组件, 需要使用该组件来运行此应用程序"
3. 解决方法
  • 去官网下载(https://gluonhq.com/products/javafx/)对应版本的JavaFx,由于M1/M2系列Mac是Arm架构,所以选择aarch64架构的SDK;
  • 下载完后,解压缩到某个目录,如/Applications/javafx-sdk-21.0.1;
  •  编写一个运行jar程序的shell脚本,命名为runjar.sh,如下代码:
#!/bin/zsh

# 检查是否提供了 JAR 文件路径作为参数
if [ "$#" -ne 1 ]; then
    echo "Usage: $0 <path_to_jar>"
    exit 1
fi

# 获取 JAR 文件路径
jar_path="$1"

# 检查文件是否存在
if [ ! -f "$jar_path" ]; then
    echo "Error: JAR file not found: $jar_path"
    exit 1
fi

output_file="output.log"

# 设置 trap,当接收到退出信号时执行删除操作
cleanup() {
    rm -f "$output_file"
    echo "Cleanup complete."
}

# 启动程序并将输出重定向到文件
nohup java --module-path /Applications/javafx-sdk-21.0.1/lib --add-modules javafx.controls,javafx.fxml -jar "$jar_path" > "$output_file" 2>&1 </dev/null &

# 获取进程ID
PID=$!

# 设置 trap,捕捉 EXIT 和其他信号(例如 SIGTERM)
trap cleanup EXIT
trap "cleanup; exit 1" SIGTERM

# 等待进程结束
wait $PID
  • /Applications/javafx-sdk-21.0.1/lib需要替换为你JavaFX SDK的实际路径;

  • 在Terminal中使用chmod 777 runjar.sh,赋予对应的执行权限;

  • 编辑.zshrc,可以使用vim ~/.zshrc或者code ~/.zshrc,并在文件中添加

    alias runjar="/Users/vul1ha0/Script/runjar.sh"作为命令别名;

  • 使用source ~/.zshrc使配置文件生效;

  • 现在在Terminal中直接使用runjar XXX.jar即可运行jar文件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值