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

Maven构建JavaFX项目报错:找不到符号/包不存在

解决JavaFX项目Maven构建找不到类的问题

我来帮你梳理下问题的核心和解决方向——你遇到的问题本质是JDK 9及以后版本中JavaFX的依赖管理方式发生了根本性变化,再加上你使用的旧版Maven插件不兼容新环境,才导致mvn install时出现大量类找不到的错误。

问题根源拆解

  1. JDK 9开始,JavaFX已经从JDK官方包中分离出来,成为独立的OpenJFX项目,你之前配置的${java.home}/lib/jfxrt.jar在JDK 9环境中根本不存在,system范围的依赖自然失效。
  2. com.zenjava的javafx-maven-plugin版本8.8.3是针对JDK 8开发的,完全不支持JDK 9+的模块化系统,无法正确处理OpenJFX的依赖。

具体解决步骤

1. 清理过时的配置

先把pom.xml里这两部分内容删掉:

  • 旧的jfxrt system依赖
  • com.zenjava的javafx-maven-plugin

2. 添加正确的OpenJFX依赖

根据你的JDK版本(9.0.4),添加对应版本的OpenJFX模块化依赖到<dependencies>节点:

<dependencies>
    <!-- 基础UI控件模块,对应你找不到的Alert类 -->
    <dependency>
        <groupId>org.openjfx</groupId>
        <artifactId>javafx-controls</artifactId>
        <version>9.0.4</version>
    </dependency>
    <!-- 如果用到FXML,添加这个模块 -->
    <dependency>
        <groupId>org.openjfx</groupId>
        <artifactId>javafx-fxml</artifactId>
        <version>9.0.4</version>
    </dependency>
    <!-- 其他用到的模块比如javafx-graphics、javafx-media等,按需添加 -->
</dependencies>

3. 替换为官方支持的Maven插件

在<build>的<plugins>节点中添加OpenJFX官方维护的插件,它完全支持JDK 9+:

<build>
    <plugins>
        <plugin>
            <groupId>org.openjfx</groupId>
            <artifactId>javafx-maven-plugin</artifactId>
            <version>0.0.8</version> <!-- 适配JDK 9+的稳定版本 -->
            <configuration>
                <!-- 替换成你的主类全路径,比如com.yourpackage.MainApplication -->
                <mainClass>你的主类完整路径</mainClass>
            </configuration>
        </plugin>
    </plugins>
</build>

4. 模块化项目额外配置(如果有module-info.java)

如果你的项目是模块化结构(存在module-info.java),需要在其中声明对JavaFX模块的依赖:

module your.module.name {
    requires javafx.controls;
    requires javafx.fxml;
    // 如果用FXML,需要打开对应的包给FXML框架访问
    opens com.yourpackage.ui to javafx.fxml;
    // 导出主类所在的包
    exports com.yourpackage;
}

5. 验证构建命令

现在执行mvn clean install应该就能正常构建了,运行项目可以用:

mvn javafx:run

如果需要打包成可执行镜像,使用JDK 9+的jlink工具:

mvn javafx:jlink

额外注意事项

  • 确保本地Maven仓库已经正确下载了OpenJFX的依赖,如果下载失败可以手动清理仓库后重新执行构建。
  • Eclipse能正常运行是因为它可能自动识别了你本地安装的OpenJFX路径,但Maven完全依赖pom.xml配置,所以必须确保pom中的配置和环境匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:01:50