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

多模块JavaFX Maven项目打包找不到主类及JavaFX依赖缺失问题

问题根因

这个报错是两个常见问题共同导致的:

  • maven-jar-plugin默认仅打包当前模块的编译代码,不会将JavaFX、逻辑层word.generator等依赖包打入生成的Jar文件中,直接执行java -jar时找不到对应依赖类
  • JavaFX 11及以上版本为独立模块化组件,直接通过类路径加载会触发模块校验问题,无法正常识别javafx.application.Application类

解决方法

方案1:开发阶段快速运行(推荐)

你已经在UI模块配置了javafx-maven-plugin,不需要手动执行打包后的Jar,直接在UI模块根目录执行以下命令即可启动应用,插件会自动处理JavaFX模块路径和所有依赖加载:

mvn clean javafx:run

方案2:构建独立可执行Jar包

如果需要打包成可以独立运行的Jar文件,需要修改UI模块的pom3.xml,新增maven-shade-plugin配置将所有依赖打包到同一个Jar中,同时新增一个无JavaFX依赖的启动类规避模块校验问题:

  1. 新增启动类org.games.marty.Main:
package org.games.marty;
public class Main {
    public static void main(String[] args) {
        App.main(args);
    }
}
  1. 在pom3.xml的build/plugins节点下新增shade插件配置:
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-shade-plugin</artifactId>
    <version>3.2.4</version>
    <executions>
        <execution>
            <phase>package</phase>
            <goals>
                <goal>shade</goal>
            </goals>
            <configuration>
                <transformers>
                    <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                        <mainClass>org.games.marty.Main</mainClass>
                    </transformer>
                </transformers>
            </configuration>
        </execution>
    </executions>
</plugin>
  1. 重新执行根目录下的mvn clean package命令,生成的Jar包在UI模块的target目录下,直接执行java -jar UI-0.1.jar即可启动。

额外校验项

确认UI模块的代码目录结构符合Maven规范:src/main/java/org/games/marty/App.java,避免包路径不匹配导致主类找不到的问题。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.08 05:45:04