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

JavaFX调用stage.setFullScreen打包为exe后报错,javafx:run正常

问题解决:Gluon打包exe时setFullScreen触发ClassNotFoundException

问题核心

使用Gluon将JavaFX应用打包为Windows exe时,调用stage.setFullScreen(true)会抛出ClassNotFoundException: com.sun.javafx.tk.quantum.OverlayWarning,但mvn javafx:run可正常启动应用;替换为setMaximized(true)后exe能正常运行。环境配置为GraalVM Gluon 22.1.0.1-Final、JavaFX 17.0.1/11、Windows,已按Gluon文档安装Visual Studio依赖。

原因分析

com.sun.javafx.tk.quantum.OverlayWarning是JavaFX Quantum渲染引擎的内部类,调用setFullScreen(true)时会动态加载该类。但GraalVM原生镜像构建时,默认不会自动包含代码未直接引用的内部类,导致运行时无法找到该类。

解决方案

1. 添加反射配置文件

在项目src/main/resources/META-INF/native-image目录下创建reflect-config.json文件,内容如下:

[
  {
    "name": "com.sun.javafx.tk.quantum.OverlayWarning",
    "allDeclaredConstructors": true,
    "allPublicConstructors": true,
    "allDeclaredMethods": true,
    "allPublicMethods": true,
    "allDeclaredFields": true,
    "allPublicFields": true
  }
]

该配置会告知GraalVM在构建原生镜像时,必须包含该类的所有反射元数据。

2. 调整pom.xml的GluonFX插件配置

确保插件能读取到上述反射配置文件,在pom.xml的<plugin>标签中添加资源配置:

<plugin>
    <groupId>com.gluonhq</groupId>
    <artifactId>gluonfx-maven-plugin</artifactId>
    <version>2.1.0</version>
    <configuration>
        <mainClass>你的主类全路径</mainClass>
        <!-- 配置资源目录,确保反射文件被打包 -->
        <resources>
            <resource>
                <directory>src/main/resources</directory>
            </resource>
        </resources>
        <!-- 保留原有的其他配置 -->
    </configuration>
</plugin>

注:插件版本需与GraalVM版本匹配,2.1.0适配GraalVM 22.1.0系列。

3. 可选:添加JVM参数强制加载内部类

也可在插件配置中添加JVM参数,提前触发类加载,避免原生镜像遗漏:

<configuration>
    <!-- 其他已有配置 -->
    <jvmArgs>
        <jvmArg>-Dcom.sun.javafx.tk.quantum.OverlayWarning.enabled=true</jvmArg>
    </jvmArgs>
</configuration>

验证步骤

  1. 清理旧构建产物:mvn clean
  2. 重新构建原生镜像:mvn gluonfx:build
  3. 测试运行:mvn gluonfx:nativerun

此时调用stage.setFullScreen(true)应不再抛出ClassNotFoundException。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 00:25:30