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文件。