文档章节

启动报Duplicate fragment name: spring_web for jar

Wilsonp
 Wilsonp
发布于 2017/06/01 15:38
字数 551
阅读 406
收藏 0

web项目采用jetty-run-jetty插件启动,报错如下:

java.lang.IllegalStateException: Duplicate fragment name: spring_web for jar:file:///Users/xxx/Downloads/apache-maven-3.3.9/repository/org/springframework/spring-web/4.2.5.RELEASE/spring-web-4.2.5.RELEASE.jar!/META-INF/web-fragment.xml and jar:file:///Users/xxx/Downloads/apache-maven-3.3.9/repository/org/springframework/spring-web/4.3.2.RELEASE/spring-web-4.3.2.RELEASE.jar!/META-INF/web-fragment.xml
	at org.eclipse.jetty.webapp.MetaData.addFragment(MetaData.java:279)
	at org.eclipse.jetty.webapp.FragmentConfiguration.findWebFragments(FragmentConfiguration.java:75)
	at org.eclipse.jetty.webapp.FragmentConfiguration.preConfigure(FragmentConfiguration.java:42)
	at org.eclipse.jetty.webapp.WebAppContext.preConfigure(WebAppContext.java:480)
	at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:516)
	at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
	at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:132)
	at org.eclipse.jetty.server.Server.start(Server.java:405)
	at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:106)
	at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:61)
	at org.eclipse.jetty.server.Server.doStart(Server.java:372)
	at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
	at runjettyrun.Bootstrap.main(Bootstrap.java:79)

按照提示来看,是jar依赖重复了,导致找到了两个web_fragment段文件,直接被误导了,根本原因在于servlet3.0的新特性之一:可插性支持

那什么是“可插性支持”呢?

如果说 3.0 版本新增的注解支持是为了简化 Servlet/ 过滤器 / 监听器的声明,从而使得 web.xml 变为可选配置, 那么新增的可插性 (pluggability) 支持则将 Servlet 配置的灵活性提升到了新的高度。熟悉 Struts2 的开发者都知道,Struts2 通过插件的形式提供了对包括 Spring 在内的各种开发框架的支持,开发者甚至可以自己为 Struts2 开发插件,而 Servlet 的可插性支持正是基于这样的理念而产生的。使用该特性,现在我们可以在不修改已有 Web 应用的前提下,只需将按照一定格式打成的 JAR 包放到 WEB-INF/lib 目录下,即可实现新功能的扩充,不需要额外的配置。(https://www.ibm.com/developerworks/cn/java/j-lo-servlet30/#_%20%E5%8F%AF%E6%8F%92%E6%80%A7%E6%94%AF%E6%8C%81)

解决问题:

在web.xml文件的<web-app>中增加“metadata-complete=true”配置,该属性指定当前的部署描述文件是否是完全的。如果设置为 true,则容器在部署时将只依赖部署描述文件,忽略所有的注解(同时也会跳过 web-fragment.xml 的扫描,亦即禁用可插性支持,具体请看后文关于 可插性支持的讲解);如果不配置该属性,或者将其设置为 false,则表示启用注解支持(和可插性支持)

© 著作权归作者所有

共有 人打赏支持
Wilsonp
粉丝 0
博文 19
码字总数 6679
作品 0
徐汇
架构师
maven install项目没有配置overlay怎么也能讲war项目合并来?

joker.good.customExceptionHandler-Model0.0.1war 我在项目配置了一个war但是没有配置overlay插件但是执行install命令的时候还是会打印下面的语句 [INFO] --- maven...

joker_zhou
2014/08/28
2.2K
0
java.lang.NoSuchMethodError: org.springframewor...

今天 在做测试时 总报这个错误 , 而在tomcat里启动时都没有错误 郁闷 , 现在终于解决了 ,,原来是maven Spring jar包的问题,,,我maven里有spring3.0的包也有spring 2.5 的包 jar包冲突...

肥皂泡2
2011/11/15
0
0
springmvc学习笔记(21)-springmvc整合mybatis遇到的问题及解决小结

springmvc学习笔记(21)-springmvc整合mybatis遇到的问题及解决小结 标签: springmvc mybatis [TOC] 本文主要记录springmvc整合mybatis整合过程中遇到的各种问题和解决方法 遇到的问题 在web...

brianway
2016/03/17
92
0
Spring Boot干货系列:(五)开发Web应用JSP篇

        前言   上一篇介绍了Spring Boot中使用Thymeleaf模板引擎,今天来介绍一下如何使用SpringBoot官方不推荐的jsp,虽然难度有点大,但是玩起来还是蛮有意思的。   正文   先...

后端编程嘟
2017/03/14
0
0
基于 Spring Boot 2.0 构建一个 RESTful WebService

REST 全称是 Representational State Transfer,中文意思是“表述性状态转移”。RESTful 是关于 Web 的现有特征和使用方式的一些准则和约束。 基于 Spring MVC 的 RestController,我们可以方...

摆码王子
04/17
0
0

没有更多内容

加载失败,请刷新页面

加载更多

TypeScript基础入门之高级类型的多态的 this类型

转发 TypeScript基础入门之高级类型的多态的 this类型 高级类型 多态的this类型 多态的this类型表示的是某个包含类或接口的子类型。 这被称做F-bounded多态性。 它能很容易的表现连贯接口间的...

durban
28分钟前
0
0
tomcat中的几种log catalina localhost

体会 catalina.out catalina.log 是tomcat的标准输出(stdout)和标准出错(stderr) cataliana.{yyyy-MM-dd}.log和localhost.{yyyy-MM-dd}.log 是通过logging.properties配置的tomcat自己运行的......

onedotdot
50分钟前
1
0
Oracle return exit continue

常在循环体中看到下面3种语句: return exit continue 举例说明 啥都没有 -- none begin for i in 1 .. 10 loop if i < 5 then dbms_output.put_line('i < 5, i = ' || to_char......

taadis
今天
3
0
JSONObject 转换时出错 InvocationTargetException

JSONObject 转换时出错java.lang.reflect.InvocationTargetException 一时看不出来是什么问题。 挺奇怪的。 百度参考了一下这个 网页的解决方案 说是类型不对,空? 仔细查看代码,果然是有一...

之渊
今天
3
0
no such module 'pop'问题

在github上 clone 了一个 swift 项目,编译时提示"no such module 'POP'"错误,查了一下居然是因为podfile中指定的最低版本是iOS 11.0,大于我测试手机的iOS版本10.3.3,将Podfile中的最低版...

yoyoso
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部