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

Maven Assembly Plugin构建Fat Jar时未包含项目自身类导致主类找不到的解决方法

解决Maven Assembly Plugin生成Fat Jar不包含项目自身类的问题

我之前也碰到过一模一样的问题,核心是两个细节没处理好,咱们一步步来解决:

问题根源分析

你生成的Fat Jar里只有第三方依赖、没有自身项目类,导致主类找不到,主要是这两个原因:

  • 插件版本不一致:你在<pluginManagement>里定义的maven-assembly-plugin版本是3.3.0,但实际使用的<plugins>块里却用了3.0.0,版本不匹配会导致插件无法正确读取项目编译后的class文件。
  • 构建命令顺序问题:直接执行mvn assembly:single时,Maven没先完成项目的编译、打包步骤,assembly插件找不到target/classes目录下的自身类文件,自然没法打包进去。

修改后的POM配置

先把插件版本统一,保留绑定到package阶段的配置,这样用标准Maven命令就能一步生成正确的Fat Jar:

<build> 
<!-- To parse properties files under resources folder : --> 
<resources> 
<resource> 
<directory>src/main/resources</directory> 
<filtering>true</filtering> 
</resource> 
</resources> 
<pluginManagement> 
<plugins> 
<plugin> 
<groupId>org.apache.maven.plugins</groupId> 
<artifactId>maven-assembly-plugin</artifactId> 
<version>3.3.0</version> 
</plugin> 
</plugins> 
</pluginManagement> 
<plugins> 
<plugin> 
<groupId>org.apache.maven.plugins</groupId> 
<artifactId>maven-assembly-plugin</artifactId> 
<!-- 继承pluginManagement里的版本,无需重复指定 -->
<configuration> 
<descriptorRefs> 
<descriptorRef>jar-with-dependencies</descriptorRef> 
</descriptorRefs> 
<archive> 
<manifest> 
<mainClass>com.acme.qpguard.editor.Application</mainClass> 
</manifest> 
</archive> 
</configuration> 
<executions> 
<execution> 
<id>make-assembly</id> 
<phase>package</phase> 
<goals> 
<goal>single</goal> 
</goals> 
</execution> 
</executions> 
</plugin> 
</plugins> 
</build>

正确的构建命令

现在只需要执行这条命令,就能自动完成编译、打包、合并依赖的全流程:

mvn clean package

执行后,包含自身类和所有依赖的Fat Jar会生成在target目录下,文件名一般是[你的项目名]-[版本号]-jar-with-dependencies.jar,直接运行这个Jar就能正常启动应用了。

最后再确认下你的项目是标准Maven结构:src/main/java下放Java源码、src/main/resources下放资源文件(你说Eclipse能正常运行,这块应该没问题)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 16:37:36