运行Jar包出现提示xxx中没有主清单属性报错问题解决方法

 更新时间:2023年08月21日 11:49:25   作者:下课后我要去放牛  
这篇文章主要介绍了运行Jar包出现:xxx中没有主清单属性报错,当出现报错:xxx中没有主清单属性,解决方法也很简单,在pom.xml配置中,加上相应配置即可,需要的朋友可以参考下

推荐阅读:

jar包运行时提示jar中没有主清单属性的解决

运行Jar包出现:xxx中没有主清单属性报错

1、项目打好jar包时,使用命令运行jar包:

java -jar xxx.jar

出现报错:xxx中没有主清单属性

解决办法:亲测有用

在pom.xml配置中,加上以下配置:

<build>
        <!--打包成jar包时的名字-->
        <finalName>xxxTest</finalName>
        <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>

再打包运行时,成功输出日志

解决运行jar包时报错“没有主清单属性“以及丢失依赖jar包的问题

问题描述

原因描述

Maven 打包时默认情况下不会将第三方依赖打包进去是因为 Maven 遵循了一种依赖管理的原则,即将项目与其依赖库(第三方库)分开管理。这样做有以下几个优点:
1.减小打包体积:如果所有的第三方依赖都包含在打包文件中,将会导致最终的构建产物巨大,增加部署和传输的成本。而只打包项目本身的代码和资源,可以显著减小生成的可执行文件的大小。
2.依赖共享与复用:Maven 使用中央仓库来存储和管理各种开源库,这些库可以被多个项目共享和复用。通过在项目的 pom.xml 文件中声明依赖,Maven 可以自动下载所需的库文件,确保项目构建所依赖的库的版本一致性,并在构建过程中自动解决依赖关系。
3.简化维护和升级:由于第三方依赖独立于项目进行管理,并且通过 Maven 的依赖管理机制进行引入和更新,当需要升级某个第三方库的版本时,只需修改项目的 pom.xml 文件中的相应依赖版本号,而无需手动替换库文件或修改代码。
尽管 Maven 默认不会将第三方依赖打包进可执行文件中,但你仍然可以通过 Maven 的插件来实现将依赖打包到可执行文件中的需求。例如,通过 Maven Shade 插件或者SpringBoot的Maven插件可以创建一个可执行 JAR 文件,并将所有依赖库打包为一个可执行的大 JAR 文件

在一些情况下,即使没有在 Maven 插件配置中显式指定主类,在打包时也可以成功生成包含主清单属性的可执行 JAR 文件。这是因为在某些情况下,Maven 可以自动检测到项目的入口点,并将其作为默认的主类。
然而,这种自动检测主类的行为并不是所有情况下都适用。具体是否需要显式指定主类取决于你的项目结构和依赖关系。如果 Maven 无法自动检测到主类或者检测到的主类不是你希望的,最常见的就是你的引导类名不规范导致如"Starter"(应该是StarterApplication),就会出现"没有主清单属性"的错误。
因此,为了保证项目的可靠性和一致性,建议在 Maven 插件配置中显式指定主类。这样可以避免潜在的问题,并确保打包后的可执行 JAR 文件始终具有正确的主清单属性。

解决方案:

1:规范书写

2 明确声明主类名以及打包方式

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <configuration>
            <fork>true</fork>
                <mainClass>引导类全类名</mainClass>
            </configuration>
        </plugin>
    </plugins>
</build>

到此这篇关于运行Jar包出现:xxx中没有主清单属性报错的文章就介绍到这了,更多相关xxx中没有主清单属性报错内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • IDEA无法使用终端terminal问题的解决方案

    IDEA无法使用终端terminal问题的解决方案

    这篇文章主要介绍了IDEA无法使用终端terminal问题的解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-09-09
  • 深入理解LinkedHashSet集合的底层机制

    深入理解LinkedHashSet集合的底层机制

    这篇文章主要介绍了LinkedHashSet的底层机制详解,LinkedHashSet根据元素的hashCode值来决定元素的存储位置,同时使用链表维护元素的次序, 这使得元素看起来是以插入顺序保存的,需要的朋友可以参考下
    2023-10-10
  • SpringBoot Java后端实现okhttp3超时设置的方法实例

    SpringBoot Java后端实现okhttp3超时设置的方法实例

    Okhttp的使用没有httpClient广泛,网上关于Okhttp设置代理的方法很少,下面这篇文章主要给大家介绍了关于SpringBoot Java后端实现okhttp3超时设置的相关资料,需要的朋友可以参考下
    2021-10-10
  • Java中Objects.equals踩坑记录

    Java中Objects.equals踩坑记录

    最近在工作中发现一个问题,觉着还是挺有必要记录下的,这篇文章主要给大家介绍了关于Java中Objects.equals踩坑的相关资料,需要的朋友可以参考下
    2022-03-03
  • Java JDBC导致的反序列化攻击原理解析

    Java JDBC导致的反序列化攻击原理解析

    这篇文章主要介绍了Java JDBC导致的反序列化攻击原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-12-12
  • Linux中使用shell脚本管理Java应用程序

    Linux中使用shell脚本管理Java应用程序

    在日常开发和运维工作中,管理基于Java的应用程序是一项基础且频繁的任务,本文将通过一个示例脚本,展示如何利用Shell脚本简化这一流程,实现Java应用的一键式启动、停止与重启操作,本脚本不仅提升了工作效率,还确保了操作的标准化与可靠性
    2024-06-06
  • 详谈jvm线程栈空间内存分配位置

    详谈jvm线程栈空间内存分配位置

    这篇文章主要介绍了jvm线程栈空间内存分配位置,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-09-09
  • 一文详解Java拦截器与过滤器的使用

    一文详解Java拦截器与过滤器的使用

    这篇文章主要为大家详细介绍了Java中拦截器与过滤器的使用与区别,文中的示例代码讲解详细,对我们学习有一定参考价值,需要的可以参考一下
    2022-04-04
  • 浅谈MyBatis 如何执行一条 SQL语句

    浅谈MyBatis 如何执行一条 SQL语句

    Mybatis 是 Java 开发中比较常用的 ORM 框架。在日常工作中,我们都是直接通过 Spring Boot 自动配置,并直接使用,但是却不知道 Mybatis 是如何执行一条 SQL 语句的,下面就一起讲解一下
    2021-05-05
  • Java算法实现调整数组顺序使奇数位于偶数之前的讲解

    Java算法实现调整数组顺序使奇数位于偶数之前的讲解

    今天小编就为大家分享一篇关于Java算法实现调整数组顺序使奇数位于偶数之前的讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-01-01

最新评论