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

Ubuntu18.04下Java10+Maven编译JavaFX项目失败求助

解决Java 10环境下JavaFX应用编译问题

核心问题很明确:从Java 10开始,Oracle JDK和OpenJDK都不再捆绑JavaFX模块,你系统里的默认Java 10环境根本没有javafx.graphics、javafx.controls这些模块——这就是java --list-modules | grep fx无输出,以及编译时提示模块找不到的原因。

下面给你两种可行的解决方案,优先推荐Maven依赖管理的方式,更省心:

方案一:通过Maven引入JavaFX依赖(推荐)

修改你的pom.xml,添加JavaFX的依赖并配置编译器参数,让Maven自动下载并管理JavaFX模块:

  1. 添加JavaFX依赖
    在<project>标签内加入<dependencies>区块,因为你的代码用到了javafx.application和javafx.stage,只需要引入javafx-controls(它会自动依赖javafx-graphics等核心模块):

    <dependencies>
        <dependency>
            <groupId>org.openjfx</groupId>
            <artifactId>javafx-controls</artifactId>
            <version>10.0.2</version>
        </dependency>
    </dependencies>
    
  2. 更新Maven编译器配置
    修改现有的maven-compiler-plugin,添加--add-modules参数指定需要的JavaFX模块:

    <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.7.0</version>
        <configuration>
            <release>10</release>
            <compilerArgs>
                <arg>--add-modules</arg>
                <arg>javafx.controls</arg>
            </compilerArgs>
        </configuration>
    </plugin>
    
  3. (可选)配置运行插件
    如果需要通过Maven运行应用,添加exec-maven-plugin来处理模块路径:

    <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>exec-maven-plugin</artifactId>
        <version>3.0.0</version>
        <executions>
            <execution>
                <goals>
                    <goal>java</goal>
                </goals>
            </execution>
        </executions>
        <configuration>
            <mainClass>my.test.MyApp</mainClass>
            <arguments>
                <argument>--add-modules</argument>
                <argument>javafx.controls</argument>
            </arguments>
        </configuration>
    </plugin>
    

完成后,执行mvn clean compile就能正常编译,运行的话用mvn exec:java即可。

方案二:手动使用JavaFX SDK

如果你不想用Maven依赖,也可以手动下载JavaFX SDK并配置模块路径:

  1. 下载对应Java 10的JavaFX 10.0.2 SDK(选择你的系统版本),解压到本地路径(比如/opt/javafx-sdk-10.0.2)。
  2. 编译时指定模块路径和需要的模块:
    javac --module-path /opt/javafx-sdk-10.0.2/lib --add-modules javafx.controls MyApp.java
    
  3. 运行时同样指定模块路径:
    java --module-path /opt/javafx-sdk-10.0.2/lib --add-modules javafx.controls MyApp
    

额外提示

Java 10已经是停止维护的版本了,建议尽量升级到Java 11或更高的LTS版本,搭配对应的JavaFX LTS版本(比如JavaFX 17),这样不仅能获得更好的支持,遇到的问题也会更少。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 10:12:16