运行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中没有主清单属性报错内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java基于百度天气API实现天气实时获取

    Java基于百度天气API实现天气实时获取

    这篇文章主要为大家详细介绍了Java如何基于百度天气API实现天气实时获取功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2026-03-03
  • SpringBoot多租户配置与实现示例

    SpringBoot多租户配置与实现示例

    本文详细介绍了在SpringBoot中实现多租户架构的方法和步骤,包括配置数据源、Hibernate拦截器、租户解析器等,以共享数据库、共享数据表的方式,确保数据隔离和安全性,感兴趣的可以了解一下
    2024-09-09
  • MyBatis学习教程(八)-Mybatis3.x与Spring4.x整合图文详解

    MyBatis学习教程(八)-Mybatis3.x与Spring4.x整合图文详解

    这篇文章主要介绍了MyBatis学习教程(八)-Mybatis3.x与Spring4.x整合图文详解的相关资料,需要的朋友可以参考下
    2016-05-05
  • SpringBoot整合分布式锁redisson的示例代码

    SpringBoot整合分布式锁redisson的示例代码

    这篇文章主要介绍了SpringBoot整合分布式锁redisson,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-02-02
  • Springboot配置文件内容加密代码实例

    Springboot配置文件内容加密代码实例

    这篇文章主要介绍了Springboot配置文件内容加密代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-11-11
  • 使用SpringBoot进行身份验证和授权的示例详解

    使用SpringBoot进行身份验证和授权的示例详解

    在广阔的 Web 开发世界中,身份验证是每个数字领域的守护者,在本教程中,我们将了解如何以本机方式保护、验证和授权 Spring-Boot 应用程序的用户,并遵循框架的良好实践,希望对大家有所帮助
    2023-11-11
  • Java 线程相关总结

    Java 线程相关总结

    这篇文章主要介绍了Java 线程的相关资料,帮助大家更好的理解和学习使用Java,感兴趣的朋友可以了解下
    2021-02-02
  • java Socket实现多人群聊与私聊功能

    java Socket实现多人群聊与私聊功能

    这篇文章主要为大家详细介绍了java Socket实现多人群聊与私聊功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-07-07
  • Java 集合去重的三种方法

    Java 集合去重的三种方法

    本主要介绍了Java 集合去重的三种方法,包含HashSet,Stream API和手动遍历并使用Map三种,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-07-07
  • java读取用户登入退出日志信息上传服务端

    java读取用户登入退出日志信息上传服务端

    这篇文章主要介绍了java读取用户登入退出日志信息上传服务端的相关资料,需要的朋友可以参考下
    2016-05-05

最新评论