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

如何解决Java 17下Spring Boot JavaFX Maven项目运行问题

解决Spring Boot + JavaFX项目运行时"JavaFX runtime components are missing"的简便方案

本地运行(mvn spring-boot:run)解决方案

直接在pom.xml里配置Spring Boot Maven插件,传递JavaFX模块参数,同时引入对应平台的JavaFX依赖,无需手动下载SDK:

  • 添加JavaFX依赖到dependencies节点(根据你的操作系统替换classifier值,可选win/mac/linux):
<dependency>
    <groupId>org.openjfx</groupId>
    <artifactId>javafx-controls</artifactId>
    <version>17.0.9</version>
    <classifier>win</classifier>
</dependency>
<dependency>
    <groupId>org.openjfx</groupId>
    <artifactId>javafx-fxml</artifactId>
    <version>17.0.9</version>
    <classifier>win</classifier>
</dependency>
  • 配置Spring Boot Maven插件,添加JVM参数启用JavaFX模块:
<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <configuration>
                <jvmArguments>--add-modules javafx.controls,javafx.fxml</jvmArguments>
            </configuration>
        </plugin>
    </plugins>
</build>

配置完成后,直接执行mvn spring-boot:run即可正常启动项目,不会再出现"JavaFX runtime components are missing"错误。

打包后运行(java -jar)解决方案

之前执行java -jar app.jar无报错但GUI不显示,是因为JVM未加载JavaFX模块,只需在运行命令中添加模块参数即可:

java --add-modules javafx.controls,javafx.fxml -jar app.jar

如果想避免每次手动输入参数,也可以在pom.xml中配置Spring Boot插件生成可直接运行的包:

<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <configuration>
        <executable>true</executable>
        <jvmArguments>--add-modules javafx.controls,javafx.fxml</jvmArguments>
    </configuration>
</plugin>

执行mvn package后,生成的jar包可直接双击运行(Windows/macOS),或通过./app.jar(Linux)启动,无需额外参数。

为什么无需模块化改造?

Spring Boot项目确实不强制要求模块化,上述方案通过传递JVM模块参数+引入JavaFX依赖的方式,既满足JavaFX的运行要求,又不需要修改项目结构进行模块化改造,完全符合简便需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 16:51:27