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

如何从NetBeans的Maven JavaFX项目生成包含依赖的可运行Jar文件

如何从NetBeans的Maven JavaFX项目生成包含依赖的可运行Jar文件

嘿,我来帮你搞定这个JavaFX Maven项目打包成可运行Jar的问题!你已经用NetBeans创建了项目,还尝试了Assembly插件,那咱们一步步来调整配置,顺利生成包含所有依赖的Jar文件。

先明确两个前提

  • 确认你的项目是模块化(有module-info.java)还是非模块化的——Java 11+的JavaFX项目通常是模块化的,但两种情况的打包配置略有不同。
  • 确保pom.xml里已经正确引入了JavaFX核心依赖(比如controls、fxml),版本要和你的JDK版本匹配(比如JDK 11对应JavaFX 11及以上版本)。

方法一:使用Maven Assembly插件(适合非模块化项目)

这是你一开始尝试的插件,只需要补全pom.xml的配置即可:

在<build><plugins>节点下添加以下配置:

<!-- JavaFX编译运行插件,先确保项目能正常编译 -->
<plugin>
    <groupId>org.openjfx</groupId>
    <artifactId>javafx-maven-plugin</artifactId>
    <version>0.0.8</version>
    <configuration>
        <!-- 替换成你项目的主类全路径,比如com.mycompany.mavenproject2.Main -->
        <mainClass>你的主类全路径</mainClass>
    </configuration>
</plugin>

<!-- Assembly插件:打包包含所有依赖的可运行Jar -->
<plugin>
    <artifactId>maven-assembly-plugin</artifactId>
    <version>3.4.2</version>
    <configuration>
        <descriptorRefs>
            <!-- 预定义的描述符,自动打包所有依赖 -->
            <descriptorRef>jar-with-dependencies</descriptorRef>
        </descriptorRefs>
        <archive>
            <manifest>
                <!-- 同样要指定主类 -->
                <mainClass>你的主类全路径</mainClass>
            </manifest>
        </archive>
    </configuration>
    <executions>
        <execution>
            <id>make-assembly</id>
            <!-- 绑定到package阶段,执行打包时自动生成 -->
            <phase>package</phase>
            <goals>
                <goal>single</goal>
            </goals>
        </execution>
    </executions>
</plugin>

打包步骤:

  1. 在NetBeans里右键你的项目 → 选择运行Maven → 点击clean package;
  2. 打包完成后,去项目的target目录下找——会生成两个Jar,带-jar-with-dependencies后缀的那个就是包含所有依赖的可运行Jar;
  3. 运行Jar:打开终端,执行java -jar 你的Jar文件名.jar(注意:如果系统没有JavaFX运行时,需要额外指定模块路径,比如java --module-path /path/to/javafx/lib --add-modules javafx.controls,javafx.fxml -jar 你的Jar文件名.jar)。

方法二:使用Maven Shade插件(适合模块化项目)

如果你的项目是模块化的(有module-info.java),Assembly插件可能会因为模块依赖冲突导致Jar无法运行,这时候推荐用Shade插件,它能更好地处理模块和服务加载器的问题:

在<build><plugins>节点下添加以下配置:

<!-- JavaFX编译运行插件 -->
<plugin>
    <groupId>org.openjfx</groupId>
    <artifactId>javafx-maven-plugin</artifactId>
    <version>0.0.8</version>
    <configuration>
        <mainClass>你的主类全路径</mainClass>
    </configuration>
</plugin>

<!-- Shade插件:处理模块化项目的依赖打包 -->
<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>
                <shadedArtifactAttached>true</shadedArtifactAttached>
                <shadedClassifierName>shaded</shadedClassifierName>
                <transformers>
                    <!-- 指定主类 -->
                    <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                        <mainClass>你的主类全路径</mainClass>
                    </transformer>
                    <!-- 处理服务加载器,避免模块化冲突 -->
                    <transformer implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer"/>
                </transformers>
                <!-- 排除签名文件,避免打包时冲突 -->
                <filters>
                    <filter>
                        <artifact>*:*</artifact>
                        <excludes>
                            <exclude>META-INF/*.SF</exclude>
                            <exclude>META-INF/*.DSA</exclude>
                            <exclude>META-INF/*.RSA</exclude>
                        </excludes>
                    </filter>
                </filters>
            </configuration>
        </execution>
    </executions>
</plugin>

打包步骤:

  1. 同样在NetBeans里右键项目 → 运行Maven → clean package;
  2. 去target目录找带-shaded后缀的Jar文件,这就是可运行的打包产物;
  3. 运行方式和上面一样,若系统无JavaFX运行时,需指定模块路径和模块。

小提示

  • 一定要替换配置里的<mainClass>为你项目实际的主类全路径,不然Jar运行时会找不到入口;
  • 如果想要Jar能双击运行,需要确保目标系统安装了包含JavaFX运行时的JDK,或者用jpackage工具生成包含JRE的安装包(不过这就不是单纯的Jar文件了)。

备注:内容来源于stack exchange,提问作者Kian

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.17 11:27:58