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

NetBeans中JavaFX Maven项目构建发布及JAR无法运行问题咨询

解决JavaFX 15 Maven项目JAR无法运行的问题

核心问题分析

从你的pom.xml可发现两个关键问题:

  • JavaFX依赖版本不一致:javafx-media使用了19-ea+8,但其他JavaFX依赖为15,版本冲突会引发运行时异常。
  • 缺少正确打包配置:普通JAR或未配置的fat jar无法处理JavaFX的模块化启动逻辑,直接运行会报错。

步骤1:统一JavaFX依赖版本

将所有JavaFX依赖版本统一为15,修改pom.xml中的javafx-media依赖:

<dependency>
    <groupId>org.openjfx</groupId>
    <artifactId>javafx-media</artifactId>
    <version>15</version>
</dependency>

步骤2:选择合适的打包方案

方案A:构建可执行Fat Jar(适合快速分发)

使用maven-shade-plugin并配置JavaFX专用启动器,修改pom.xml的build节点:

<build>
    <plugins>
        <!-- 保留原有maven-compiler-plugin和javafx-maven-plugin -->
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-shade-plugin</artifactId>
            <version>3.4.1</version>
            <executions>
                <execution>
                    <phase>package</phase>
                    <goals>
                        <goal>shade</goal>
                    </goals>
                    <configuration>
                        <transformers>
                            <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                                <mainClass>com.desktop.healtydesk.App</mainClass>
                            </transformer>
                            <transformer implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer"/>
                        </transformers>
                        <shadedArtifactAttached>true</shadedArtifactAttached>
                        <shadedClassifierName>all</shadedClassifierName>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

构建后运行命令:

java -jar target/MyProject-1.0-SNAPSHOT-all.jar

方案B:使用jlink创建自定义运行时镜像(推荐用于正式发布)

JavaFX官方推荐用jlink构建包含JRE的独立镜像,无需目标机器预装Java。修改javafx-maven-plugin添加jlink配置:

<plugin>
    <groupId>org.openjfx</groupId>
    <artifactId>javafx-maven-plugin</artifactId>
    <version>0.0.8</version> <!-- 升级至兼容JavaFX 15的版本 -->
    <configuration>
        <mainClass>com.desktop.healtydesk.App</mainClass>
        <jlinkImageName>MyProjectApp</jlinkImageName>
        <jlinkZipName>MyProjectApp-zip</jlinkZipName>
    </configuration>
    <executions>
        <!-- 保留原有executions -->
        <execution>
            <id>jlink</id>
            <goals>
                <goal>jlink</goal>
            </goals>
        </execution>
    </executions>
</plugin>

执行构建命令:

mvn clean javafx:jlink

构建完成后,在target/MyProjectApp目录中找到启动脚本(Windows为bin/MyProjectApp.bat,Linux/macOS为bin/MyProjectApp),直接运行即可。


临时运行方案(无需打包)

若仅需测试运行,可直接执行:

mvn clean javafx:run

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 04:07:12