Maven配置mainClass后用java -jar启动jar仍提示no main manifest attribute如何解决
问题排查解决步骤
- 确认你运行的是正确的jar包
maven-assembly-plugin 配置jar-with-dependencies后会生成两个jar包:
- 后缀为
original-xxx.jar的原始jar,不包含依赖也没有主类配置,你应该运行名称带jar-with-dependencies后缀的jar包
- 确认你运行的是正确的jar包
- 修正插件执行阶段绑定
你当前把maven-assembly-plugin的执行绑定到了repackage阶段,该阶段是Spring Boot插件的自定义阶段,不属于Maven标准生命周期,常规打包命令mvn package不会触发该阶段执行,把phase改为标准的package即可:
- 修正插件执行阶段绑定
<execution> <id>make-assembly</id> <phase>package</phase> <!-- 这里把repackage改成package --> <goals> <goal>single</goal> </goals> </execution>
修改后重新执行mvn clean package即可触发插件执行生成正确的可执行jar。
- 核对主类配置正确性
- 确认
com.testpackage.testclass类真实存在,类顶部的package声明和配置路径完全一致 - 确认该类存在标准的主方法:
注意主方法的访问修饰符必须是public static void main(String[] args) { // 业务逻辑 }public、静态修饰符static不能缺失,参数格式必须为String[] args- 手动校验jar包的清单文件
如果上述步骤都没问题还是报错,解压你运行的jar包,查看META-INF/MANIFEST.MF文件,确认是否存在Main-Class: com.testpackage.testclass的配置行,如果没有说明插件未正常执行,可检查pom中插件是否放在<build><plugins>层级下,多模块项目需要将插件配置放到需要打包的子模块pom中,而非父pom。
- 手动校验jar包的清单文件
内容的提问来源于stack exchange,提问作者brainoverflow
相关产品推荐
相关产品推荐

