欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 美景 > Spring Boot 项目部署启动异常问题分析与解决​:主类缺失与依赖冲突的分析

Spring Boot 项目部署启动异常问题分析与解决​:主类缺失与依赖冲突的分析

2025/3/14 4:23:07 来源:https://blog.csdn.net/weixin_43833540/article/details/146197862  浏览:    关键词:Spring Boot 项目部署启动异常问题分析与解决​:主类缺失与依赖冲突的分析

Spring Boot 项目部署启动异常问题分析与解决

在近期的 Spring Boot 项目部署工作中,遭遇了一起典型的启动异常状况。经过多维度的深入排查以及细致的调试,最终确定问题的根源在于打包插件配置与依赖管理的综合影响。以下将详细阐述整个问题的分析过程以及对应的解决办法。

一、初始报错:No Main Manifest Attribute

当项目首次尝试通过java -jar命令启动时,系统抛出了no main manifest attribute异常。经过初步排查,发现项目的MANIFEST.MF文件中缺少Main-Class条目。根据过往经验,此类问题通常与打包插件的配置存在关联。

排查过程

检查插件配置:项目起初采用maven-jar-plugin进行打包操作。为解决上述问题,首先对该插件的配置进行修改,明确指定主类,具体配置如下:

<plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-jar-plugin</artifactId><version>3.3.0</version><configuration><archive><manifest><mainClass>cn.zcyun.xcloud.srv.xconn.Application</mainClass></manifest></archive></configuration></plugin>

从功能层面看,maven-jar-plugin作为 Maven 的基础插件,核心功能聚焦于将项目编译后的 class 文件打包成标准的 JAR 文件。它对项目的处理较为常规,不会对项目的运行环境和启动机制做特殊处理。而spring-boot-maven-plugin专为 Spring Boot 项目量身定制,除了具备基本的打包功能外,还能将 Spring Boot 项目所需的依赖项妥善整合进最终的可执行 JAR 包,并且自动配置Main-ClassJarLauncher,这是 Spring Boot 项目能够正确启动的关键设置。同时,它支持对 Spring Boot 项目的自动配置机制,保证项目在启动时能依据配置正确加载各类组件和服务。

在配置方式上,maven-jar-plugin相对简单。在上述配置中,主要通过<archive>标签下的<manifest>子标签来手动指定Main-Class。如果项目有其他诸如自定义 Manifest 属性等需求,也在<manifest>标签内添加相应配置。相比之下,spring-boot-maven-plugin的配置更为丰富和灵活。除了可通过<configuration>标签下的<mainClass>指定主类外,它还能配置启动脚本相关属性,例如<executable>标签可设置生成的 JAR 包是否为可执行文件;<layout>标签能定义打包的布局结构,如ZIPJAR等格式;<addResources>标签可控制是否将项目资源文件一并打包等。

从适用场景而言,maven-jar-plugin适用于普通的 Java 项目,这些项目结构相对简单,没有复杂的依赖管理和特定的运行环境要求,只需要将代码打包成 JAR 文件以便在 Java 虚拟机上运行。而spring-boot-maven-plugin则专门适用于 Spring Boot 项目。Spring Boot 项目具有自身独特的依赖管理体系、自动配置机制以及特定的启动方式,spring-boot-maven-plugin能够全方位满足这些特性需求,确保 Spring Boot 项目能够顺利打包、部署和启动。

重新进行打包并运行项目,然而此时却抛出了依赖缺失异常,提示一个通过submodule引入的类无法找到。最初怀疑是submodule的引入出现问题,遂对submodule项目执行mvn install命令,结果显示无异常。

需要注意的是,Spring Boot 项目需要依赖spring-boot-maven

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词