动态Web项目用Tomcat部署时出现两个甚至多个spring-web的jar包

SpringBoot项目部署实战:JAR与WAR包部署原理、对比与生产环境最佳实践 Java Web应用部署是后端开发的核心环节,其本质是将应用程序从开发环境迁移到服务器环境,确保服务稳定运行。从技术原理上看,部署方式主要分为独立应用模型和容器依赖模型,这直接影响了应用的可移植性、资源管理和运维流程。在工程实践中,SpringBoot框架通过内嵌Servlet容器技术,实现了JAR包的一键式独立部署,大幅简化了传统Java EE应用的部署复杂度。对于需要融入现有企业级中间件体系或共享容器资源的场景,WAR包部署仍具价值。本文聚焦于SpringBoot项目的两种主流部署方式,深入解析JAR包 阅读详情

动态Web项目用Tomcat部署时出现两个甚至多个spring-web

本人小白一枚,在创建第一个SpringMVC项目的时候出现了如下问题:
HelloWorld项目下出现两个spring-web
这就导致部署该项目的时候控制台报错,如下:

严重: 子容器启动失败
java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/HelloWorld]]
	at java.util.concurrent.FutureTask.report(Unknown Source)
	at java.util.concurrent.FutureTask.get(Unknown Source)
	at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:916)
	at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:841)
	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
	at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1384)
	at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1374)
	at java.util.concurrent.FutureTask.run(Unknown Source)
	at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
	at java.util.concurrent.AbstractExecutorService.submit(Unknown Source)
	at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:909)
	at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:262)
	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
	at org.apache.catalina.core.StandardService.startInternal(StandardService.java:421)
	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
	at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:932)
	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
	at org.apache.catalina.startup.Catalina.start(Catalina.java:633)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:344)
	at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:475)
Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/HelloWorld]]
	at org.apache.catalina.util.LifecycleBase.handleSubClassException(LifecycleBase.java:440)
	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:198)
	at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1384)
	at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1374)
	at java.util.concurrent.FutureTask.run(Unknown Source)
	at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
	at java.util.concurrent.AbstractExecutorService.submit(Unknown Source)
	at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:909)
	... 21 more
Caused by: java.lang.IllegalArgumentException: More than one fragment with the name [spring_web] was found. This is not legal with relative ordering. See section 8.2.2 2c of the Servlet specification for details. Consider using absolute ordering.
	at org.apache.tomcat.util.descriptor.web.WebXml.orderWebFragments(WebXml.java:2257)
	at org.apache.tomcat.util.descriptor.web.WebXml.orderWebFragments(WebXml.java:2215)
	at org.apache.catalina.startup.ContextConfig.webConfig(ContextConfig.java:1134)
	at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:775)
	at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:301)
	at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:123)
	at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5048)
	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
	... 27 more

重点在这:
Caused by: java.lang.IllegalArgumentException: More than one fragment with the name [spring_web] was found. This is not legal with relative ordering. See section 8.2.2 2c of the Servlet specification for details. Consider using absolute ordering.
刚开始不理解,去网上找了一下
其中一种解决方法
按照链接中的做法处理之后,重启Tomcat依旧报错,我注意到,链接中出现的问题
链接中出现的问题
是加载了两次相同的jar包,而我的是不同的jar包,但是名字都是spring-web
还有一种解决方法:

项目右键properties–deployment assembly里remove了一个/WebContent

但是这样操作之后,虽然Tomcat能启动,但是访问页面404,因为这样WebContent文件夹下的jsp,xml文件,lib文件夹都不能部署到Tomcat中,找不到访问路径自然就404了。

网上关于这个错误的记录很少,只能靠自己了。我就想,既然是出现了多个jar包,那是不是我引入到lib中的jar包出现了问题,一看果然是:
在lib文件夹下出现了两个spring-web
lib文件夹下
原因找到了,我下载的spring-framework版本是

spring-framework-5.1.8.RELEASE-dist

我在引入jar包的时候把spring-framework-5.1.8.RELEASE文件夹下的libs文件夹中所有的jar包都引入到了项目中,就导致了如上错误。
解决方法:很简单,把项目中/Web-Content/WEB-INF/lib文件夹下的spring-web-5.1.8.RELEASE-sources.jar删掉就可以了。再重新启动Tomcat,页面就能正常访问了。
困扰我一个下午的问题终于解决了┭┮﹏┭┮

建议像我一样的新手小白在引入jar包的时候尽量用到什么就引入什么,多引入jar包也可能会出现问题。

SpringBoot项目部署实战:JAR与WAR包部署详解及服务器配置 Java Web应用部署是软件开发的关键环节,其核心在于将编译后的代码与依赖打包成可执行格式,并部署到服务器环境中运行。从原理上讲,Java应用通常通过Web容器(如Tomcat)来提供HTTP服务,而SpringBoot通过内嵌容器的设计简化了这一过程。在技术价值上,不同的打包部署方式直接影响着应用的独立性、可移植性以及运维复杂度。常见的应用场景包括微服务架构下的独立部署、传统企业级应用的服务器共享部署等。本文聚焦于SpringBoot项目的两种主流部署方式:JAR包部署和WAR包部署。JAR包部署采用内 阅读详情

相关推荐

Java Web项目从本地到服务器部署全流程详解

在软件开发领域,项目部署是将本地开发环境中的应用迁移到生产服务器,使其对外提供服务的关键环节。其核心原理在于构建一个与开发环境一致或兼容的运行时环境,包括Java运行环境、Web容器和数据库等。这一过程的技术价值在于实现了应用从开发到生产的跨越,确保了服务的可用性、稳定性和可扩展性。典型的应用场景包括企业级应用上线、互联网服务发布以及微服务架构的实施。本文将聚焦于Java Web项目,特别是基于Spring Boot和传统SSM架构的应用,深入探讨如何通过项目打包、Tomcat配置和数据库迁移等核心步骤,完

weixin_30915951的博客 451

Eclipse中项目两次加载 or Eclipse下Servers中一个项目下有两个甚至多个spring-web的jar

 问题展示:       解决:  打开Servers中的server.xml,找到     <ContextdocBase="sensor" path="/sensor" reloadable="true"source="org.eclipse.jst.jee.server:sensor"/>将reloadable参数改为false。 注意:1.修改这个参数后,配合Host标签的au...

yushudiaolan的博客 2624

SpringBoot项目Maven打包与跨平台部署实战:从Jar包到生产环境

在Java企业级开发中,可执行Jar包是一种常见的应用打包与部署方式,它基于Java的跨平台特性和内嵌Web服务器机制,将应用及其所有依赖封装为单一文件,极大简化了部署流程。其核心原理在于通过Maven或Gradle等构建工具的特定插件(如spring-boot-maven-plugin),将依赖库、资源文件与启动引导类打包在一起,生成所谓的“Fat Jar”或“Uber Jar”。这种打包方式的技术价值在于实现了应用与运行时环境的解耦,提升了部署的一致性和可移植性,特别契合微服务架构和云原生场景下的快速交

weixin_34059951的博客 348

动态Web项目用Tomcat部署时出现两个spring-web的jar包

动态Web项目用Tomcat部署时会出现两个spring-web的jar包 我猜测的原因:由于项目的多次加载,导致lib下面的spring-web的jar包的重复 控制台报错如下(有删除多余部分): 严重: A child container failed during start java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [Stand

C_1223_的博客 1419

Maven打包全解析:从Jar包原理到Spring Boot实战

在Java开发中,Jar包作为代码交付的标准格式,其打包方式直接影响应用的部署与运行。理解Jar包的本质——一个包含MANIFEST.MF清单文件的特殊ZIP压缩包,是掌握打包技术的基础。Maven作为主流构建工具,通过其生命周期管理和插件机制,提供了多种打包策略,从仅包含项目代码的“瘦Jar”到集成所有依赖的“Fat Jar”,每种方式都对应不同的应用场景。在工程实践中,合理选择打包方式能有效解决依赖冲突、资源加载等常见问题,提升部署效率。本文聚焦于**Maven打包**和**可执行Jar**这两个核心热

weixin_34101229的博客 350

spring-web-5.3.6 jar包.rar

这个jar文件包含Web应用开发时,用到Spring框架时所需的核心类, 包括自动载入WebApplicationContext特性的类、Struts与JSF集成类、文件上传的支持类、Filter类和大量工具辅助类。 spring的核心类,提供了核心HTTP集成,提供了表现层(springmvc)到业务层(spring)再到数据层的全套解决方案。 包括一些动载入Web ApplicationContext 特性的类、Lister类、文件上传的支持类、便捷的工具辅助类、Spring HTTP调用、用于集成其他web框架的基础结构以及技术,例如(@RequestMapping)

【解决】Tomcat控制台中文乱码问题及部署报错java.lang.IllegalArgumentException: 找到多个名为spring_web的片段。这是不合法的相对排序。

1.找到tomcat配置文件中的logging.properties。在web.xml中加入2.将其中的5个UTF-8改为GBK。重启Tomcat,看到中文报错内容。重启Tomcat就解决了。

kkk990101的博客 1201

Mathcad在LLC谐振变换器设计中的公式推导实战

本文通过Mathcad软件,详细演示了LLC谐振变换器设计的核心公式推导实战。文章阐述了如何利用Mathcad作为“会思考的草稿纸”,从定义基本参数、应用基波近似法(FHA)模型,到逐步推导电压增益公式及确定工作边界频率(fmin, fmax),并展示了如何通过动态参数扫描进行优化设计,帮助电源工程师高效、直观地完成理论计算,为后续仿真与实现奠定坚实基础。

q1w3e5r7t9y的博客 295

TOMCAT 下 部署多工程 JAR (TOMCAT的类库加载的优先顺序一览 )

问题:现在有5个工程。里面都使用了spring mvc spring security 和相同的一些jar包  可以把jar 包 都 抽到 tomcat lib 下 或 jre lib 下吗?  要是可以。会不会对工程有什么影响。 回答: 可以,但个人不建议这样  因为像common\lib下的包是相对很通用又稳定的包  如果你把你这几个工程共用的几个相同包放进来  一定时间看起来是文件少了不...

varyall的专栏 2242

从‘能看’到‘好看’:用Seaborn调色板让你的热力图在PPT和论文中脱颖而出

本文探讨如何利用Seaborn调色板提升热力图在PPT和论文中的视觉效果,从视觉心理学和场景适配角度出发,提供学术与商业场景下的配色方案和实战代码。通过优化色彩选择,使数据可视化更具专业性和吸引力,帮助读者快速理解关键信息。

weixin_30755393的博客 245

手势控制 Python !Leap Motion Python 开发教程 (二)

手势控制 Python !Leap Motion Python 开发教程 (二) 现在进入正题,我来给大家总结一下我在使用 Leap Motion 开发过程中的经验以及学到的东西,其中我会概括以及翻译官方给出的注释,为了让这些注释更加通俗易懂,让大家更好理解。 回顾 在上一篇文章中我们讲了如何配置 Leap Motion 的 Python 2.7 的开发环境,如果您还没有配置好您的开发环境,可以参...

成畅的博客 3193

eclipse 部署项目到Tomcat spring-web 的jar包部署失败

注意:文章中我所说的编译时指启动tomcat服务器。     首先编译报错:   在网上一搜索,都说是没有spring-web-4.2.4.RELEASE.jar jar包 但是,我的WEB_INF/lib 中有这个jar 包     去Tomcat 中去看看:发现tomcat 中并没有该jar包       于是收到copy一个过去,OK! 可以正常编译。   但是...

tanghui20的专栏 3611

保姆级教程:用Altium Designer 24从零画一块PCB(附完整库文件与避坑清单)

本文提供了一份详细的Altium Designer 24(AD24)PCB设计教程,从工程创建到最终文件输出,涵盖元件库管理、原理图设计、PCB布局布线等全流程。特别适合初学者,包含STM32最小系统板的实战案例,附完整库文件和避坑清单,帮助用户快速掌握AD24的核心功能与技巧。

weixin_27697385的博客 249

Spring Boot项目通过tomcat部署项目(包含jar包、war包)

本文介绍了SpringBoot项目的两种Tomcat部署方式:1)内置Tomcat打包为Jar,适合快速开发和独立部署;2)外置Tomcat打包为War,适合传统企业环境。详细说明了每种方式的配置步骤,包括pom.xml修改、入口类调整、打包命令等。重点对比了两种方式的优缺点,并提供了部署时的注意事项,如端口配置、依赖管理等。文章还简要介绍了Tomcat的发展历史和核心功能,帮助开发者根据实际需求选择合适的部署方案。

LMS2022223000的博客 1919

C#调用企业微信JS-Sdk实现扫描二维码

企业微信JS-SDK是企业微信面向网页开发者提供的基于企业微信内的网页开发工具包。通过使用企业微信JS-SDK,网页开发者可借助企业微信高效地使用拍照、选图、语音、位置等手机系统的能力,同时可以直接使用企业微信分享、扫一扫等企业微信特有的能力,为企业微信用户提供更优质的网页体验提示:生成签名之前必须先了解一下jsapi_ticket,jsapi_ticket是H5应用调用企业微信JS接口的临时票据。正常情况下,jsapi_ticket的有效期为7200秒,通过access_token来获取。

清浅 937

《唤醒你的AI同事:WorkBuddy从零上手》004:与其他 AI 工具的对比

把 WorkBuddy 与聊天机器人、办公套件内置 AI、自动化工具逐维对比,并按当前版本补充四项新差距:结果交付、连接器广度、资料库与多模态产出。

LuckyHanMo的博客 671

springboot通过tomcat部署项目(包含jar、war两种方式,迄今为止全网最详细!2024更新..建议收藏,教学!万字长文!)

本文详细介绍了 Spring Boot 项目使用 内置 Tomcat 和 外置 Tomcat 两种方式的部署方法。首先介绍了 Tomcat 的起源、作用及优势,随后针对内置 Tomcat 部署,将 Spring Boot 项目打包为可执行的 jar 文件 并直接运行。接着讲解了外置 Tomcat 部署方法,将项目打包为 war 文件 并部署到独立的 Tomcat 服务器中。文章通过图文并茂的步骤展示了如何配置项目、修改 pom.xml、打包及启动项目,并讨论了相关配置和常见问题的解决方案。

m0_73804746的博客 1万+

Spring AI 实战:如何使用 MCP Server 搭建 MCP 天气查询服务

MCP(Model Context Protocol)是 Anthropic 提出的一种开放协议,它定义了AI 模型与外部世界交互的标准方式。通俗地说:大模型本身只拥有训练数据中的知识,它不知道今天的天气、无法查询你的数据库、不能调用你的内部 API。MCP 就是解决这个问题的"桥梁"——它让模型能够发现并使用外部工具(Tools),就像人用手去操作工具一样。角色职责对应依赖MCP Server暴露工具(Tool),供模型调用MCP Client连接 Server,让模型发现和使用工具本文我们先聚焦。

SmartSi 758

项目部署方法总结

本文介绍了Java Web项目部署的核心概念与流程:Tomcat作为Java Web服务器是项目运行的关键工具;项目需脱离IDEA独立运行,通过云服务器实现24小时在线服务。重点对比了JAR包和WAR包的区别:JAR包适用于非Web项目直接运行,WAR包需依赖Tomcat服务器。部署方式分为静态部署(需重启)和动态部署(无需重启),包括通过server.xml配置、webapps目录放置等具体方法。不同项目类型(如SSM、SpringBoot)需采用不同打包格式和部署策略,其中Web项目通常需打包为WAR部

LSL666_的博客 1029

34、高效探索柔性蛋白质环构象空间的算法

本文介绍了一种高效探索柔性蛋白质环构象空间的算法,通过种子采样和变形采样两种技术,同时满足运动学闭合和避免空间位阻冲突的约束条件。种子采样能够在闭合无冲突构象空间中广泛生成构象,而变形采样则可以对“有趣”区域进行更密集的探索。实验结果表明,这两种方法在不同大小和受限程度的蛋白质环上均表现出色,运行时间在可接受范围内。相关算法已集成到工具包LoopTK中,可在https://simtk.org/home/looptk获取。

moon9的博客 127

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Spring Boot JAR包部署实践与优化指南

JAR包作为Java应用的标准部署格式,通过将应用与嵌入式服务器打包为单一可执行文件,实现了开发与生产环境的一致性。其核心原理基于Spring Boot的约定优于配置理念,配合Maven/Gradle构建工具自动处理依赖关系。这种部署方式特别适合云原生场景,与Docker容器化技术形成完美互补,能够显著提升微服务架构下的交付效率。在实际工程实践中,需要关注JVM参数调优、多环境配置管理以及生产级监控方案,这些都是保障Java应用稳定运行的关键技术点。通过合理配置spring-boot-maven-plugi

weixin_33924312的博客 332

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Springboot项目(包含第三方jar包)打成war包方法

Spring Boot一般以jar包的形式发布,但是有的时候需要动态配置参数部署项目,尤其是配置的参数数量特别多时,使用war包部署实际上是一个不错的选择。以下是将Spring Boot项目打包成war包发布的详细过程。 1、修改启动类,并重写configure方法 @SpringBootApplication @MapperScan("") public class Application...

乐点的博客 1801

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Spring Boot与Vue前后端分离项目一体化Jar包部署实战

在微服务与前后端分离架构成为主流的今天,如何高效、简洁地部署应用是开发者面临的核心工程挑战。其原理在于将前端构建的静态资源(HTML、JS、CSS)嵌入到后端服务的可执行文件中,实现服务与资源的统一封装。这项技术价值在于能极大简化部署流程,降低运维成本,尤其适合中小型项目或需要快速交付的场景。具体应用时,开发者需关注前端构建路径配置、Spring Boot静态资源处理以及Maven打包插件的整合。本文以Jeecg-boot低代码平台为例,详细解析了如何将Vue前端与Spring Boot后端打包成一个可执行

weixin_30897079的博客 473

java web项目的前世今生

对比项JAR 包(Spring Boot 等)WAR 包(传统项目)能否独立运行✅ 可java -jar直接运行❌ 需放到 Tomcat 等容器运行目录结构简单(class + MANIFEST)严格(WEB-INF/classes、WEB-INF/lib)使用场景普通程序、Spring Boot、库文件Servlet/JSP/Spring MVC 项目。

weixin_44186907的博客 695

java gxt eclipse_ecplise 下将spring boot 项目部署至tomcat运行

开始认为这个问题比较少见,不过后面才发现其实是两个很细微的问题导致的不能直接添加到tomcat中。问题描述: 直接创建的spring boot 项目在ecplise navigator 视图下可以看到项目目录结构如下图: 这时候哪怕在pom.xml中设置了war 去掉内嵌tomcat,再将启动器修改为SpringBootServletInitializer但也只是获得了项目的war包,虽说可以在t...

weixin_39907316的博客 199

java开发常用jar包

annotations-api.jar 注解所需的jar包 catalina-ant.jar tomcat部署所需要的jar包 catalina-ha.jar catalina 就是Tomcat服务器使用的 Apache实现的servlet容器的 名字。 Tomcat的核心分为3个部分: (1)Web容器—处理静态页面; (2)catalina — 一个servlet容器-----处理servlet; (3)还有就是JSP容器,它就是把jsp页面翻译成一般的servlet。 activation-1.1.j

weixin_45031655的博客 961
我是苞谷啊!
博客等级 码龄8年 1粉丝 1原创
评论 5
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值