【问题】----运行jar命令提示没有主清单属性

这篇具有很好参考价值的文章主要介绍了【问题】----运行jar命令提示没有主清单属性。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、原因

打包的方式不对,打包的时候少了文件**

二、解决办法

在pom.xml中添加/修改maven打包依赖:

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

三、错误实例

<!--错误方式1:作为普通包导入-->
<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
    </dependency>
</dependencies>
<!--错误方式2:缺少成员-->
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

四、原因分析

1.出错现象

jar中没有主清单属性,jar,java,maven

2.主清单属性

	主清单属性是jar包中MANIFEST.MF文件中的属性,这里主要造成问题的属性是Main-Class: com.tl.SecurityAPP
	文件位置在我们我打的jar包下META-INF文件夹下

3.描述

当我们将打包插件依赖删除后会发现项目照样可以打包,由此可见我们出错是因为使用了原始maven打包,并没有使用我们添加的打包插件打包。
没有使用打包插件时在项目中打开MANIFEST.MF文件会发现有Main-Class属性,当打开jar包会发现里面的MANIFEST.MF并没有此属性。
使用打包插件后发现MANIFEST.MF有此属性,且多了xxx.jar.original的文件而且jar包结构也不一样。

四、打包依赖分析

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

1. 说明

<extensions/>
     <!--在构建生命周期中执行一组目标的配置。每个目标可能有不同的配置。-->
     <executions>
      <!--execution元素包含了插件执行需要的信息-->
      <execution>
       <!--执行目标的标识符,用于标识构建过程中的目标,或者匹配继承过程中需要合并的执行目标-->
       <id/>
       <!--绑定了目标的构建生命周期阶段,如果省略,目标会被绑定到源数据里配置的默认阶段-->
       <phase/>
       <!--配置的执行目标-->
       <goals/>
       <!--配置是否被传播到子POM-->
       <inherited/>
       <!--作为DOM对象的配置-->
       <configuration/>
      </execution>
</executions>

2.对比出错依赖配置我们会发现多了点:

   <executions>
            <execution>
                <goals>
                    <goal>repackage</goal>
                </goals>
            </execution>
   </executions>   

repackage有啥用呢?
1.将原始Maven打包形成的jar包进行重新打包,包含应用类文件、配置文件、应用所依赖的jar包、Springboot启动相关类(loader等)。
2.将原始Maven打包形成的jar包备份,并重命名为xxxxxx.jar.original,所以我们发现使用打包插件比原始打包方式多了此文件。

3.使用打包插件打包后我们会发现jar包可以启动了文章来源地址https://www.toymoban.com/news/detail-607076.html

到了这里,关于【问题】----运行jar命令提示没有主清单属性的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 快速+完美+准确解决SpringBoot项目打包后的SNAPSHOT.jar中没有主清单属性的问题

    目录 问题再现 问题解决 结果 xxxx-0.0.1-SNAPSHOT.jar中没有主清单属性 1 出问题的pom.xml文件 2 正确的pom.xml文件 请注意改变了什么? 答:删除掉 skiptrue/skip 即可了 改完记得刷新xml文件!!!! 运行成功了, 同时我们发现了正确打包下的文件远比错误打包下的文件要大  

    2024年02月05日
    浏览(46)
  • SpringBoot 时 jar 报错 没有主清单属性

    使用阿里版 Spring Initializr 创建的项目。 springboot 2.6.13 JDK 1.8 这里自动开了 skip 。 注释后打的 jar 包就可以运行了。 关键点就是这里注释掉的 !-- skiptrue/skip-- SpringBoot 应用脚手架 Spring Initializr

    2024年02月07日
    浏览(32)
  • SpringBootDemo-0.0.1-SNAPSHOT.jar 中没有主清单属性

    下面展示一些 cmd代码片 。 maven 在打包时没有配置主类。 我碰到的原因有 pom.xml 文件中没有配置,或者是配置参数错误。 一般在选择并创建 SpringBoot 项目名时,pom 文件都会自动配置好主类。 但也有选择自己后续导入依赖配置 SpringBoot。 前者 将此行注释,或改为 false 原因:

    2024年02月13日
    浏览(28)
  • 使用java命令运行class文件提示“错误:找不到或无法加载主类“的问题分析

    1.可能是编译的时候后缀带了.class:把后缀去掉; 2.可能是因为你的java文件带了package包,原因是:我们在包里运行文件,在运行文件的时候又找了一次包,可是我们已经在包里了,自然找不到主类了。 针对第二种错误解决方法有两种: 方法一:把java文件中的包删掉或者注释

    2024年02月15日
    浏览(42)
  • maven打包报“没有主属性清单”

    1、检查maven打包插件是否正确引入:需要与spring-boot的版本号一致 2、在 plugin 标签下添加对应的 executions 配置,如下 3、通过maven打包步骤进行打包:clean - - compile - - install,在target目录下找到对应jar 4、通过解压缩工具打开jar,在MANIFEST.MF文件中有Main-Class属性及对应值,则打包

    2024年02月13日
    浏览(31)
  • Android问题解决方案(一):Android 打空包提交开发者后台提示没有”android:exported“的属性设置

    今日了解到了一个新内容,意指打一个新的空包提审,来实现同个应用二次提审的效果;通过一系列操作后,成功打出了所谓aab格式的安装包。(至于为什么是aab格式,相信有所了解的朋友自然也知道什么原因,还未曾了解的朋友可以先了解相关的信息,这里就不赘述了,自

    2023年04月11日
    浏览(34)
  • 记录linux运行服务提示报错/bin/java: 没有那个文件或目录

    描述:在执行jar启动命令时候提示 没有/bin/java 这个文件或者目录;然后我vi /usr/bin/java,是存在该文件的;那到底是什么问题呢,该不是没有创建软连接吧? 1、执行下述命令先测试下软链接是否有创建 创建说明已存在,说明是软连接失效了; 2.先删除软连接 3、再次执行上

    2024年02月07日
    浏览(39)
  • 运行java命令出现 Error: Invalid or corrupt jarfile XXX.jar

    朋友 我当你一秒朋友 朋友 我当你一世朋友 奇怪 过去再不堪回首 怀缅 时时其实还有 运行java命令出现 Error: Invalid or corrupt jarfile XXX.jar 基本可以断定,是jar不完整导致的。不完整!!!记住 检查1: 检查是不是传输中断了,有些传输命令会超时,一超时就断了。 检查

    2024年02月06日
    浏览(35)
  • JDK环境变量配置成功,命令提示符(CMD)中,输入java、javac、java -version等没有反应

    Java下载后,手动配置环境变量,并且配置好,但是在命令行中无论输入java的什么都没有反应; 问题:安装JDK后,手动配置环境好JAVA_HOME,Path等环境变量,但是在命令行窗口输入java、javac、java -version等命令,命令行都无反应 这里主要的问题就是环境变量出现了问题 我们这里怎么查

    2024年02月07日
    浏览(29)
  • Java程序运行——在intellij IDEA 或命令提示符上运行java程序(1)

    目录 一、IDEA 1.创建java New Project(项目) 2.创建package(包) 3.创建java class(类) 二、命令提示符 1.新建记事本、写入代码和另存为.java文件  2.打开命令提示符并进行相应操作 创建java项目(注意项目保存位置,尽量放在D盘,初学者最好不要乱改) (1)第一种 1New Project中的  

    2024年02月07日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包