You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Mac M1打包JavaFX应用启动报错:No toolkit found

问题分析与解决办法

核心原因

你遇到的No toolkit found异常,本质是jlink生成的自定义JRE缺少JavaFX图形模块的支持,同时Spring Boot Fat Jar的结构导致JavaFX的native组件无法被模块化JRE正确加载:

  • 你用jlink只打包了java.base、java.logging等核心模块,但JavaFX的Toolkit属于javafx.graphics模块,该模块包含Mac平台的native toolkit实现,自定义JRE里没有这个模块,自然找不到Toolkit。
  • 虽然你的Jar里包含JavaFX类,但模块化JRE默认只会加载自身模块路径下的模块,Fat Jar里的JavaFX类无法被模块化机制识别,导致相关依赖无法初始化。

解决办法

1. 重新用jlink生成包含JavaFX模块的JRE

生成自定义JRE时,必须显式加入JavaFX的核心模块,针对Mac aarch64架构,执行类似命令:

jlink --module-path $PATH_TO_JAVAFX_MODS:$JAVA_HOME/jmods \
      --add-modules java.base,java.logging,javafx.graphics,javafx.controls,javafx.fxml \
      --output custom-jre-mac-aarch64 \
      --strip-debug --compress=2

注意:$PATH_TO_JAVAFX_MODS要指向对应aarch64架构的JavaFX模块包(不是Jar,是jmods或者模块化的Jar目录),确保和你的Temurin-18版本匹配。

2. 调整启动脚本的参数

在Mac App的启动脚本里,需要补充JavaFX相关的启动参数:

./custom-jre-mac-aarch64/bin/java \
    -XstartOnFirstThread \
    --add-modules javafx.controls,javafx.graphics \
    --module-path ./path/to/javafx-mods \
    -jar drkodi-mac-aarch64.jar
  • -XstartOnFirstThread:Mac平台JavaFX启动的强制参数,确保UI线程在主线程。
  • --add-modules:显式指定需要加载的JavaFX模块。
  • --module-path:如果你的Fat Jar里的JavaFX不是模块化的,需要单独指定JavaFX模块的路径(可以把JavaFX的模块Jar放到App的Contents/Resources目录下)。

3. 确保JavaFX Native组件被正确放置

JavaFX的Mac native组件(.dylib文件)需要被JRE识别到,你可以:

  • 将native文件放到自定义JRE的lib目录下。
  • 或者在启动脚本里添加-Djava.library.path=./Contents/Resources/native参数,指向native文件所在的目录。

4. 改用jpackage官方工具打包(推荐)

jpackage是Oracle官方提供的打包工具,能自动处理JRE、JavaFX依赖和native组件,适合Spring Boot + JavaFX的场景,示例命令:

jpackage --type app-image \
         --name DrKodi \
         --input ./path/to/jar \
         --main-jar drkodi-mac-aarch64.jar \
         --runtime-image ./custom-jre-mac-aarch64 \
         --java-options "-XstartOnFirstThread --add-modules javafx.controls,javafx.graphics"

jpackage会自动生成符合Mac标准的App包,不需要手动处理启动脚本和native组件路径。

内容的提问来源于stack exchange,提问作者kerner1000

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 06:35:15