项目开发中发现服务器上Tomcat启动失败

  开始定位

  第一步:打开tomcat日志catalina.log:

  1. 2017-07-25 17:02:43,799 [Catalina-startStop-1] ERROR org.apache.catalina.core.ContainerBase - A child container failed during start
  2. java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/yxicadmin]]
  3. at java.util.concurrent.FutureTask.report(FutureTask.java:122)
  4. at java.util.concurrent.FutureTask.get(FutureTask.java:188)
  5. at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1122)
  6. at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:819)
  7. at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
  8. at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1574)
  9. at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1564)
  10. at java.util.concurrent.FutureTask.run(FutureTask.java:262)
  11. at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
  12. at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
  13. at java.lang.Thread.run(Thread.java:745)
  14. Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/yxicadmin]]
  15. at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)
  16. ... 6 more
  17. Caused by: java.lang.NoSuchMethodError: org.apache.tomcat.util.res.StringManager.getManager(Ljava/lang/Class;)Lorg/apache/tomcat/util/res/StringManager;
  18. at org.apache.tomcat.websocket.WsWebSocketContainer.<clinit>(WsWebSocketContainer.java:77)
  19. at org.apache.tomcat.websocket.server.WsSci.init(WsSci.java:131)
  20. at org.apache.tomcat.websocket.server.WsSci.onStartup(WsSci.java:47)
  21. at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5506)
  22. at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
  23. ... 6 more
  24. 2017-07-25 17:02:43,802 [main] ERROR org.apache.catalina.core.ContainerBase - A child container failed during start
  25. java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost]]
  26. at java.util.concurrent.FutureTask.report(FutureTask.java:122)
  27. at java.util.concurrent.FutureTask.get(FutureTask.java:188)
  28. at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1122)
  29. at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:300)
  30. at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
  31. at org.apache.catalina.core.StandardService.startInternal(StandardService.java:443)
  32. at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
  33. at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:739)
  34. at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
  35. at org.apache.catalina.startup.Catalina.start(Catalina.java:689)
  36. at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  37. at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)

  找到关键点:java.lang.NoSuchMethodError: org.apache.tomcat.util.res.StringManager.getManager(Ljava/lang/Class;)Lorg/apache/tomcat/util/res/StringManager;
  虽然不清楚是什么原因,不过很奇怪的是本地项目是能跑起来的。看了下测试机tomcat版本是7.0.56,本地是7.0.68,难道和这个有关?
第二步:判断是否和tomcat版本有关:
  下载了一个7.0.56版本的tomcat,在本地运行,果不其然,也复现了该错误。然而是不是和tomcat有关呢?这个不不能确定,但是有一点是可以肯定的,测试机tomcat版本替换难度较大,而且还要所有环境版本同步,这个代价较大,因此转换思路,是否是类冲突了呢。。
  开始百度

第三步:发现关键原因:类冲突
  网上查找类似错误,有前辈遇到了,并且分析了原因:Springboot内嵌tomcat8,与tomcat7冲突,突然意识到这个需求引入了部门其他同事提供的Jar包,难道是那个Jar包导致的。。
  OK,那我们验证下,先使用maven命令:mvn dependency:tree 输出下maven依赖树:
  发现关键点:

  

  1. [INFO] +- com.xxx.xxx.xx:xxx-client:jar:1.0-SNAPSHOT:compile
  2. [INFO] | +- com.netease.mail.dp:dqs-model:jar:1.0-SNAPSHOT:compile
  3. [INFO] | +- org.apache.commons:commons-lang3:jar:3.4:compile
  4. [INFO] | +- commons-httpclient:commons-httpclient:jar:3.1:compile
  5. [INFO] | +- org.springframework.boot:spring-boot-starter-web:jar:1.5.1.RELEASE:compile
  6. [INFO] | | \- org.springframework.boot:spring-boot-starter:jar:1.5.1.RELEASE:compile
  7. [INFO] | | +- org.springframework.boot:spring-boot:jar:1.5.1.RELEASE:compile
  8. [INFO] | | +- org.springframework.boot:spring-boot-autoconfigure:jar:1.5.1.RELEASE:compile
  9. [INFO] | | \- org.springframework.boot:spring-boot-starter-logging:jar:1.5.1.RELEASE:compile

果然,这个XXXJar包引用了org.springframework.boot:spring-boot-starter-web
试着使用网上的办法去掉spring-boot-starter-web依赖的spring-boot-starter-tomcat Jar包,没用

于是直接粗暴点:

  1. <dependency>
  2. <groupId>com.xxx.xxx.xxx</groupId>
  3. <artifactId>xxx-client</artifactId>
  4. <version>1.0-SNAPSHOT</version>
  5. <exclusions>
  6. <exclusion>
  7.   <groupId>org.apache.tomcat.embed</groupId>
  8. <artifactId>tomcat-embed-core</artifactId>
  9. </exclusion>
  10. <exclusion>
  11. <groupId>org.apache.tomcat.embed</groupId>
  12. <artifactId>tomcat-embed-el</artifactId>
  13. </exclusion>
  14. <exclusion>
  15. <groupId>org.apache.tomcat.embed</groupId>
  16. <artifactId>tomcat-embed-websocket</artifactId>
  17. </exclusion>
  18. </exclusions>
  19. </dependency>

重新打包运行,问题解决。

Tomcat启动失败:java.lang.NoSuchMethodError: org.apache.tomcat.util.res.StringManager.getManager(Ljava/lang/Class;)Lorg/apache/tomcat/util/res/StringManager的更多相关文章

  1. java.lang.NoSuchMethodError: org.apache.tomcat.util.res.StringManager.getManager(Ljava/lang/Class;)Lorg/apache/tomcat/util/res/StringManager

    问题: 使用Springboot打包为war部署于Tomcat7中报错 java.lang.NoSuchMethodError: org.apache.tomcat.util.res.StringMa ...

  2. java.lang.NoSuchMethodError: org.springframework.beans.factory.config.ConfigurableBeanFactory.getSingletonMutex()Ljava/lang/Object

    © 版权声明:本文为博主原创文章,转载请注明出处 1.问题描述 搭建SSH框架,没有添加事务时一切正常,最后添加完事务后报错,并且怎么弄都是一样.报错信息如下: 警告: Exception encou ...

  3. java.lang.NoSuchMethodError: org.springframework.beans.factory.annotation.InjectionMetadata.<init>(Ljava/lang/Class;)V

    相应我,是因为你SPRING MVC的包没有加全.你可以新建一个WEB项目.加入SPRING 3.0 的所有包.主要是WEB类的.就可以解决这个问题了.关键就是少包.特别是你的项目原来是SRPING ...

  4. Java tomcat启动失败(Servlet3.0 Web Project):A child container failed during start

    Tomcat启动失败,失败全部信息: 五月 , :: 下午 org.apache.tomcat.util.digester.SetPropertiesRule begin 警告: [SetProper ...

  5. Java Tomcat 启动失败的解决思路

    好久没写新博文了,离自己要求的每年几篇的目标也是渐行渐远. 最近在学习Java,也是从基础学习,因为我是一个.net开发人员,所以学习的成本相对低些.Java JDK,JRE,Tomact 的安装及配 ...

  6. Handler processing failed; nested exception is java.lang.NoSuchMethodError: org.apache.commons.codec.digest.DigestUtils.sha1Hex(Ljava/lang/String;)Ljava/lang/String;

    异常:Handler processing failed; nested exception is java.lang.NoSuchMethodError: org.apache.commons.co ...

  7. Tomcat启动失败问题解决

    1. 系统框架加载正常,但是Tomcat启动失败,报错如下: 2013-7-26 17:18:33 org.apache.catalina.core.StandardContext startInte ...

  8. tomcat启动失败问题排除及解决办法 Server Tomcat v7.0 Server at localhost failed to start.

    tomcat启动失败问题排除及解决办法 Server Tomcat v7.0 Server at localhost failed to start. 导致上面问题的原因可能有很多种,每种的解决办法都 ...

  9. spring-cloud-alibaba-sentinel和feign配合使用,启动报Caused by: java.lang.AbstractMethodError: com.alibaba.cloud.sentinel.feign.SentinelContractHolder.parseAndValidateMetadata(Ljava/lang/Class;)Ljava/util/List

    背景 我在学习spring-cloud-alibaba技术栈期间,在学习服务熔断与限流的时候,服务启动发生了以下异常 #这是控制台最上面的 sun.misc.Unsafe.park(Native Me ...

随机推荐

  1. java中downcast向下转型到底有什么用

    What is the point of downcast? 当一个方法只有子类才有,马克-to-win:不是说基类和子类都有,开始时又是基类指针指向派生类,这时就需要downcast, see th ...

  2. SQLite实现用户数据存储+Android之app:lintVitalRelease解决办法

    今日所学 SQLite实现用户数据存储 遇到的问题 界面没能显示出存在数据库中的信息 明日计划 查找界面没能显示出存在数据库中的信息的原因 报错:app:lintVitalRelease 解决办法: ...

  3. 微信小程序列表拖动排序Demo

    wxml页面编写 <view class="container"> <view bindtap="box" class="box&q ...

  4. Python中使用模块和库编程

    """ python中使用模块和库编程 导入模块 import modulename [as alias] from modulename import fun1,fun ...

  5. pycharm——import已存在的库居然失败!

    问题 明明在cmd中可以import的库,放到pycharm中却找不到. 问题根源 找了一圈,最后得到这个结论. 因为pycharm默认就是这样的... 解决 打开设置,找到解释器 点击右边齿轮图标, ...

  6. linux的时钟中断需要两个全局变量,分别是xtime与jiffies。

    linux的时钟中断的两个内核全局变量,分别是xtime与jiffies. 1.xtime一个timeval结构类型变量,是从cmos电路(rtc)中取得的时间,一般是从某一历史时刻开始到现在的时间, ...

  7. 帝国CMS实现栏目批量修改:是否生成

    帝国cms实现栏目批量修改 是否生成:不生成栏目页, 不生成内容页, 不生成JS调用, 标签不调用的修改方本文关键字词:栏目批量设置第一步./e/admin/SetMoreClass.php中查找: ...

  8. mount挂载命令

    了解命令mount,这是一个挂载命令,挂载的意思是指的就是将设备文件中的顶级目录连接到 Linux 根目录下的某一目录(最好是空目录),访问此目录就等同于访问设备文件.当在 Linux 系统中使用硬件 ...

  9. Java 在Word指定段落/文本位置插入分页符

    在Word插入分页符可以在指定段落后插入,也可以在特定文本位置处插入.本文,将以Java代码来操作以上两种文档分页需求.下面是详细方法及步骤. [程序环境] 在程序中导入jar,如下两种方法: 方法1 ...

  10. box-shadow-阴影,你真的懂吗

    大家好,我是半夏,一个刚刚开始写文的沙雕程序员.如果喜欢我的文章,可以关注 点赞 加我微信:frontendpicker,一起学习交流前端,成为更优秀的工程师-关注公众号:搞前端的半夏,了解更多前端知 ...