jar运行报错no main manifest attribute

在服务器上运行:

 

 

java -jar test-0.0.1-SNAPSHOT.jar
1
报错:

no main manifest attribute, in test-0.0.1-SNAPSHOT.jar
1
原因:
原因是找不到主类。

一般情况下,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>
1
2.在 pom.xml 中的 build 标签下的 plugins 标签下加入如下打包插件配置

<build>
  <plugins>
     <plugin>
          <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
        <version>${spring.boot.version}</version>
       <executions>
               <execution>
               <goals>
             <goal>repackage</goal>
                         </goals>
           </execution>
                 </executions>
            </plugin>
        </plugins>
</build>

 

 

 



说明:

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 目录下

 https://github.com/cheyunhua/newbee-mall-cloud  实验项目

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

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/qq_33697094/article/details/110549536

posted @ 2024-06-14 17:50  技术颜良  阅读(34)  评论(0编辑  收藏  举报