jar运行报错no main manifest attribute

在服务器上运行:

java -jar test-0.0.1-SNAPSHOT.jar

报错:

no main manifest attribute, in test-0.0.1-SNAPSHOT.jar

原因:

原因是找不到主类。

一般情况下,java 打包成 jar 包需要在 MANIFEST.MF 中指定 Main-Class项,以便运行 java -jar xxx.jar 时找到对应的主类。

将test-0.0.1-SNAPSHOT.jar解压后

在这里插入图片描述

查看META-INF下的MANIFEST.MF

在这里插入图片描述
在这里插入图片描述
而正常的应该是这样的:

在这里插入图片描述

解决:

1.检查 maven 项目中的 pom.xml 中有没有缺少如下配置,缺少的话加上

<packaging>jar</packaging>

2.在 pom.xml 中的 build 标签下的 plugins 标签下加入如下打包插件配置

            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>2.6.0</version>
                <configuration>
                    <mainClass>com.xtool.manager.MainDemo</mainClass>
                    <finalName>XTool</finalName>
					 <includes>
                            <include>
                                <groupId>nothing</groupId>
                                <artifactId>nothing</artifactId>
                            </include>
                     </includes>
                </configuration>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>

说明:

  • mainClass 标签里是你的项目的启动类的包路径,如果你的项目没有有启动类也不需要通过 java -jar 运行的话可以删除 mainClass
  • finalName 标签里的就是打出来的 jar 名,我这里是 XTool ,最终生成的就是 XTool.jar 。若不使用 finalName 指定,则打包生成的 jar 包名默认使用 pom.xml 文件里 artifactId 标签和 version 标签里的值作为 jar 的名。
  • 如果你希望最终生成的 jar 包不包含第三方依赖那直接用上面的插件配置即可。如果希望最终生成的 jar 包里包含第三方依赖那就删除 includes 标签及其里面的内容

3.在 idea 右边侧边栏的 Maven 选项卡里点击 Lifecyle 下的 package 就可以开始打包了

在这里插入图片描述

最终生成的 jar 包就在 target 目录下

在这里插入图片描述

如果使用这种打包方式问题任然存在,可以尝试使用 idea 来打包,可参考我另一篇文章:idea 项目代码打包为jar包详解

  • 59
    点赞
  • 94
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
问题: test | no main manifest attribute, in hello.jar是什么意思?如何解决这个问题? 回答: 这个错误信息表示在hello.jar中没有指定主清单属性(main manifest attribute),导致无法找到可执行的主类。通常在使用java -jar命令运行jar包时会出现这个问题。为了解决这个问题,你需要在打包成jar包时指定主类。在MANIFEST.MF文件中添加Main-Class项,指定你的项目的启动类的包路径。这样在运行java -jar命令时就能找到对应的主类了。\[1\]另外,如果你使用的是Maven进行构建,你还需要在pom.xml文件中引入spring-boot-maven-plugin插件,以确保正确生成可执行的jar包。\[2\]\[3\] #### 引用[.reference_title] - *1* [Linux系统下运行jar文件,提示:No main manifest attribute, in XXX.jar](https://blog.csdn.net/kangkangwanwan/article/details/78592546)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [jar运行报错no main manifest attribute](https://blog.csdn.net/qq_33697094/article/details/110549536)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [no main manifest attribute, in XXX1.0.0-SNAPSHOT.jar](https://blog.csdn.net/weixin_44403003/article/details/118097084)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值