You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何修复Maven项目中JavaFX的IllegalAccessError异常

JavaFX Maven项目启动错误解决指南

嘿,我看了你遇到的JavaFX Maven项目启动报错,这个问题我之前也踩过坑,核心原因是JavaFX 11及以后版本启用了JPMS模块化系统,而你的项目配置没跟上,导致模块内部API的访问被JVM阻止了。咱们一步步来修复:

1. 修正JavaFX插件的主类配置

你当前的javafx-maven-plugin里配置的<mainClass>org.openjfx.App</mainClass>是错误的,你的主类实际是pom.App,必须改成这个,不然插件找不到正确的启动入口。

2. 调整JavaFX依赖的作用域

JavaFX的依赖只在运行时需要,给javafx-controlsjavafx-fxml加上<scope>runtime</scope>,避免编译阶段出现模块冲突。

3. 完善编译插件的Java版本配置

确保maven-compiler-plugin指定了和JavaFX兼容的Java版本(JavaFX 12推荐用Java 11或12),添加sourcetarget参数。

4. 升级JavaFX Maven插件版本

你用的0.0.2版本太老旧了,对模块化的支持不完善,建议升级到稳定的新版本(比如0.0.8)。

修改后的关键配置片段

依赖部分:

<dependencies>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.11</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.openjfx</groupId>
        <artifactId>javafx-controls</artifactId>
        <version>12.0.1</version>
        <scope>runtime</scope>
    </dependency>
    <dependency>
        <groupId>org.openjfx</groupId>
        <artifactId>javafx-fxml</artifactId>
        <version>12.0.1</version>
        <scope>runtime</scope>
    </dependency>
</dependencies>

插件部分:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.8.0</version>
    <configuration>
        <source>12</source>
        <target>12</target>
    </configuration>
</plugin>

<!--JAVA FX-->
<plugin>
    <groupId>org.openjfx</groupId>
    <artifactId>javafx-maven-plugin</artifactId>
    <version>0.0.8</version>
    <configuration>
        <mainClass>pom.App</mainClass>
    </configuration>
</plugin>
<!--end of JAVA FX-->

最后启动项目的正确方式

不要直接运行main方法,而是用Maven命令启动:

mvn clean javafx:run

你的Java代码本身是完全没问题的,只需要调整pom.xml的配置就能解决这个启动错误啦。

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

火山引擎 最新活动