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

JavaFX程序启动报IllegalAccessError,求可行修复方案

解决JavaFX启动时的IllegalAccessError问题

问题根源

这个错误由JavaFX模块化机制触发:javafx.graphics模块默认未将com.sun.glass.utils包导出给未命名模块(无module-info.java的项目属于此类),而JavaFX媒体组件的内部实现类com.sun.media.jfxmediaimpl.NativeMediaManager需要访问该包下的NativeLibLoader类,因此触发了权限访问限制。

解决方案

1. 添加VM启动参数(最通用方案)

在程序启动时添加以下VM参数,强制javafx.graphics模块将指定包导出给所有未命名模块:

--add-exports javafx.graphics/com.sun.glass.utils=ALL-UNNAMED

不同环境的配置方式:

  • IDEA/Eclipse:在Run/Debug配置的「VM Options」栏直接填入上述参数。
  • 命令行运行:
    java --add-exports javafx.graphics/com.sun.glass.utils=ALL-UNNAMED -jar your-app.jar
    
  • Maven项目:在pom.xml的编译、测试插件中配置argLine:
    <build>
        <plugins>
            <!-- 编译阶段配置 -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.1</version>
                <configuration>
                    <release>17</release> <!-- 替换为你的Java版本 -->
                    <compilerArgs>
                        <arg>--add-exports</arg>
                        <arg>javafx.graphics/com.sun.glass.utils=ALL-UNNAMED</arg>
                    </compilerArgs>
                </configuration>
            </plugin>
            <!-- 运行/测试阶段配置 -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>3.0.0-M5</version>
                <configuration>
                    <argLine>--add-exports javafx.graphics/com.sun.glass.utils=ALL-UNNAMED</argLine>
                </configuration>
            </plugin>
        </plugins>
    </build>
    

2. 模块化项目(含module-info.java)适配

如果你的项目是模块化项目,需将包导出给具体模块而非所有未命名模块:

  • 先在module-info.java中声明依赖:
    module com.example.myfxapp {
        requires javafx.graphics;
        requires javafx.media;
        // 使用JavaFX控件时需添加:requires javafx.controls;
    }
    
  • 启动时使用以下VM参数:
    --add-exports javafx.graphics/com.sun.glass.utils=com.example.myfxapp
    

3. 检查JavaFX版本一致性

确保项目中所有JavaFX依赖模块(javafx.graphics、javafx.media、javafx.controls等)的版本完全一致,版本不兼容也可能触发类似权限异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 21:38:06