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

存在module-info.java时Maven编译报错找不到JavaFX包如何解决

问题根因
  • 带module-info.java的项目属于Java 9+模块化项目,只会从**模块路径(module-path)**加载依赖模块,你当前使用的maven-compiler-plugin未做模块化相关配置,Maven默认会把所有依赖放到类路径(classpath)下,导致JavaFX的模块无法被识别。
  • 你当前使用的3.8.1版本maven-compiler-plugin对模块化编译的支持存在已知bug,容易出现模块路径识别失效的问题。
  • pom中缺少javafx.base的显式依赖声明,即便它是其他JavaFX组件的传递依赖,模块化编译阶段也可能无法自动识别。
解决方案
  1. 补全JavaFX依赖并移除optional标记,在pom的dependencies节点下新增javafx.base依赖,同时删除原有三个JavaFX依赖中的<optional>true</optional>配置:
<dependency>
    <groupId>org.openjfx</groupId>
    <artifactId>javafx.base</artifactId>
    <version>17</version>
</dependency>
  1. 升级并配置maven-compiler-plugin,将插件版本升级到3.11.0及以上,同时增加模块化编译参数:
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.11.0</version>
    <configuration>
        <release>11</release>
        <compilerArgs>
            <arg>--module-path</arg>
            <arg>${project.build.directory}/modules</arg>
        </compilerArgs>
    </configuration>
</plugin>

其中<release>标签的值和你使用的JDK版本保持一致即可。

  1. 新增maven-dependency-plugin配置,在编译前将所有编译级依赖拷贝到模块路径对应的目录:
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-dependency-plugin</artifactId>
    <version>3.5.0</version>
    <executions>
        <execution>
            <phase>process-sources</phase>
            <goals>
                <goal>copy-dependencies</goal>
            </goals>
            <configuration>
                <outputDirectory>${project.build.directory}/modules</outputDirectory>
                <includeScope>compile</includeScope>
            </configuration>
        </execution>
    </executions>
</plugin>
  1. 执行mvn clean compile测试构建即可。如果Eclipse IDE内依然存在JavaFX相关报错,右键项目选择Maven->Update Project,勾选强制更新快照/发布版本选项同步配置即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 13:36:05