首页 > 编程语言 >java -jar XXX.jar 没有主清单属性以及找不到或无法加载主类的问题

java -jar XXX.jar 没有主清单属性以及找不到或无法加载主类的问题

时间:2023-04-28 14:44:20浏览次数:45  
标签:java 主类 boot XXX jar member gulimall

java -jar XXX.jar 没有主清单属性以及找不到或无法加载主类的问题
原文链接:https://blog.csdn.net/Mrzhuangr/article/details/124731024

文章目录


一、问题陈述

环境:
Idea 2021
jdk1.8

我的是spring boot项目,在pom文件是去掉了parent的标签,使用dependencyManagement标签对spring boot 依赖进行管理。

idea上打包运行java -jar gulimall-member-0.0.1-SNAPSHOT.jar时,报没有主清单属性的错误,完整的报错如下:

MrzhuangdeMacBook-Pro:target mrzhuang$ java -jar gulimall-member-0.0.1-SNAPSHOT.jar 
gulimall-member-0.0.1-SNAPSHOT.jar中没有主清单属性
  • 1
  • 2

二、解决方法

可以参考:Maven指令打包SpringBoot项目提示没有主清单文件

1、方法一(问题没有真正解决)

查阅了网上的解决没有主清单属性办法

提醒:这种方法,对于我的问题没有真正的解决,可能与项目的结构有关。

1.1 点击File -> Project Structure
1.1.1 依次点击artifacts -> “+” -> JAR -> From .....

1.1.2 选择模块和主类,注意下面的/main/java需要去掉,点击OK,然后点击apply

1.2 点击菜单栏Build -> Build Artifacts

1.2.1 选择想要生成的jar包,点击Build

最后在out文件夹中,成功生成了想要的jar包。

1.2.2 运行jar包:
虽然解决了没有主清单属性,但是我的又报另一个错误找不到或无法加载主类

MrzhuangdeMacBook-Pro:gulimall_member_jar mrzhuang$ java -jar gulimall-member.jar 错误: 找不到或无法加载主类。com.zhuang.gulimall.member.GulimallMemberApplication
  • 1

1.3 解决找不到或无法加载主类的方法

提示:此方法因项目的结构而异。我的没有解决!

1.3.1 在解决错误:找不到或无法加载主类,也查阅了资料,更多的是在pom文件的mven插件中,增加如下的配置

<configuration>
      <mainClass>主类的相对路径</mainClass>
</configuration>     
  • 1
  • 2
  • 3

的配置。
整体的配置:


<plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <mainClass>com.zhuang.gulimall.member.GulimallMemberApplication</mainClass>
                </configuration>
            </plugin>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

1.3.2 然后重新Build Artifacts,再次运行out路径下重新生成的jar包。
最终还是报了找不到或无法加载主类 com.zhuang.gulimall.member.GulimallMemberApplication的错误。

2、方法二(最终解决了问题)

在pom文件的maven插件中增加如下的配置:

  <executions>
          <execution>
                 <goals>
                        <goal>repackage</goal>
                 </goals>
          </execution>
   </executions>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

完整的:

 <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <executions>
                <execution>
                    <goals>
                        <goal>repackage</goal>
                    </goals>
                </execution>
                </executions>
            </plugin>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

说明:spring-boot-maven插件的repackage(goal)有如下两个作用:
1、在原始Maven打包形成的jar包基础上,进行重新打包,新形成的jar包不但包含应用类文件和配置文件,而且还会包含应用所依赖的jar包以及Springboot启动相关类(loader等),以此来满足Springboot独立应用的特性;
2、将原始Maven打包的jar重命名为XXX.jar.original作为原始文件;

对项目执行 maven clean package,可以看出在target文件中,生成了.jar包以及.original后缀的原始文件。

运行生成的jar包:

可以看出成功运行了!!!

标签:java,主类,boot,XXX,jar,member,gulimall
From: https://www.cnblogs.com/sunny3158/p/17362183.html

相关文章

  • Java 生成验证码
    1、第一步生成背景板publicvoidgenerateCheckCode(HttpServletRequestrequest,HttpServletResponseresponse)throwsIOException{//服务器通知浏览器不要缓存response.setHeader("pragma","no-cache");response.setHeader("cache-con......
  • Java中二进制与十进制转换
    转: Java中二进制与十进制转换 十进制转二进制(除2取余,直到商小于1,逆序排序)如138转二进制138÷2=69 余069÷2=34余134÷2=17余017÷2=8余18÷2=4余04÷2=2余02÷2=1余01÷2= 0余1然后逆序排序1 0  0  0......
  • 中级软件设计师软考备考资源;解决org.apache.ibatis.binding.BindingException: Invali
    中级软件设计师软考备考资源软考资源在百度网盘上org.apache.ibatis.binding.BindingException:Invalidboundstatement(notfound)问题即在mybatis中dao接口与mapper配置文件在做映射绑定的时候出现问题,简单说,就是接口与xml要么是找不到,要么是找到了却匹配不到。这是一个很容易......
  • Unknown run configuration type SpringBootApplicationConfigurationType;Servlet Ser
    UnknownrunconfigurationtypeSpringBootApplicationConfigurationType社区版的idea自己安装插件,去配置大家可分享关于Java微服务相关知识,包括但不限于Java微服务开发经验、架构组成、技术交流、中间件等内容,我们鼓励springcloud架构为基础发散出击,从而达到技术积累的目的,快来沉......
  • Provisional heads are shown、NullPointerException空指针异常?堆栈与队列的区别?Java
    Provisionalheadsareshown排查是否插件拦截,我的以前没有这种,所以排除本地网络节点问题,连接不到图片服务器,以下是解决方法:1.进入到C盘Windows文件夹System32/drivers/etc目录下,打开hosts文件,绑定下2.改下本地dns为公共dns网络节点导致的问题,一般为运营商导致,产生问题的原因为......
  • JAVA+MySQL做一个图书信息管理系统【二次开发】【更新版2.0】【纯java】、Java技术分
    JAVA+MySQL做一个图书信息管理系统【二次开发】【更新版2.0】【纯java】Java技术分享Java技术er集合啦!大家可分享关于Java技术知识,包括但不限于微服务,分布式等前沿技术,快来沉淀自己的技术,一起写出未来吧!你可以从以下几个方面着手(不强制),或者根据自己对话题主题的理解进行创作,参考如......
  • 深入jar包:从jar包中读取资源文件
    我们常常在代码中读取一些资源文件(比如图片,音乐,文本等等)。在单独运行的时候这些简单的处理当然不会有问题。但是,如果我们把代码打成一个jar包以后,即使将资源文件一并打包,这些东西也找不出来了。看看下面的代码:Java代码 //源代码1:packageedu.hxraid;import......
  • Java中>>、>>>、<<
    定义:右移动>>:带符号右移。正数右移高位补0,负数右移高位补1。左移动<<:带符号左移。正数左移低位补0,负数左移低位补1。无符号右移>>>:无论是正数还是负数,高位通通补0。 栗子:下面以32位表示2的二进制:00000000000000000000000000000010-2的二进制:11111111111111111111111......
  • Java ByteBuffer 使用实例
    packagefoo;importjava.io.IOException;importjava.nio.ByteBuffer;importjava.nio.CharBuffer;importjava.nio.charset.Charset;/**ByteBuffer并且这三个指针的关系是position<=limit<=capacity.position是当前读写的位置。limit是最大能读写的......
  • 轻松看懂Java字节码
     计算机只认识0和1。这意味着任何语言编写的程序最终都需要经过编译器编译成机器码才能被计算机执行。所以,我们所编写的程序在不同的平台上运行前都要经过重新编译才能被执行。而Java刚诞生的时候曾经提过一个非常著名的宣传口号: "一次编写,到处运行" 。WriteOnce,RunAnyw......