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

求助:Mac下JavaFX启动遇com.sun.glass.ui.mac超时警告,GUI无法打开

问题:JavaFX应用在macOS Sonoma上无法启动,出现app reactivation超时警告

环境信息

  • IntelliJ IDEA CE 2023.3(社区版)
  • JDK版本:17.0.9+7-b1087.7 aarch64(JetBrains OpenJDK),已尝试升级至21.0.1
  • 操作系统:macOS 14.1.2(Sonoma)
  • 项目类型:JavaFX新项目

问题现象

  • 运行默认Application.java文件(含项目内SQL数据库连接逻辑)时,控制台抛出警告:

com.sun.glass.ui.mac.MacApplication lambda$waitForReactivation$6
WARNING: Timeout while waiting for app reactivation

  • MacBook Air程序坞出现名为“java”的图标,5秒后自动关闭,GUI界面始终无法加载
  • 已尝试更新JDK、IntelliJ IDEA、升级系统,问题未解决

解决思路

1. 校验JavaFX运行配置

  • 确认IntelliJ运行配置的VM options中,已正确配置JavaFX模块路径与依赖模块,格式示例:
    --module-path /本地/javafx-sdk/lib --add-modules javafx.controls,javafx.fxml
  • 注意使用aarch64架构的JavaFX SDK,与本地JDK架构保持一致

2. 禁用macOS App Nap功能

  • 在终端执行命令,针对Java应用关闭App Nap:
    defaults write com.oracle.java.JavaAppLauncher NSAppSleepDisabled -bool true
  • 执行后重启IntelliJ与应用,测试启动情况

3. 排查SQL连接代码的阻塞影响

  • 暂时注释所有SQL数据库初始化代码,仅运行纯JavaFX默认界面,验证是否为数据库操作阻塞UI线程
  • 若注释后可正常启动,需将数据库操作移至后台线程(使用Task或CompletableFuture),避免阻塞UI初始化

4. 添加VM参数调整JavaFX行为

  • 在运行配置的VM options中添加以下参数,强制UI线程适配:
    -Djava.awt.headless=false -Djavafx.macos.embedded=true
  • 或禁用超时检测:
    -Dglass.uiThreadTimeout=0

5. 匹配JavaFX与JDK版本

  • 确保JavaFX SDK版本与JDK版本兼容(如JDK 21对应JavaFX 21),优先使用Gluon或官方提供的SDK包

6. 重置IntelliJ缓存

  • 执行File > Invalidate Caches... > Invalidate and Restart,清除缓存后重新配置项目

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 13:55:06