一,问题产生背景

  git更新代码重启服务器后,问题就莫名奇妙的产生了,一看报错信息,基本看不懂,然后上百度去查,基本都是说jar包冲突,于是把矛头指向maven

二,问题的解决过程

  既然确定了是maven的问题,,按照一贯的手法,clean-->package,试了n多次包括删repository,删项目重新git下载等等能干的全都干了,结果每次启动服务器时,原来非常陌生的报错信息现在又熟悉的出现在你眼前,那种想砸电脑的心情只有你自己能体会,

后来,我决定扩大问题产生的原因的范围,一步一步缩小范围排除,产生这种错误的原因无非就三种:idea有问题,maven有问题,tomcat有问题.接下来走上了测试的道路

  1.测试maven和idea

   脱离idea环境用原生态命令行写maven命令:mvn install -Dmaven.test.skip=true -Dmaven.development=true;测试打包会不会报错,结果如下:

  显然测试成功,这一步可以肯定的是,单纯的用maven打包和用idea集成maven打包效果是一样的,由此可以判断用idea配置的maven很正常,一切都正常.

  接下来就要测试maven打的war包有没有问题,把自己打的war包扔到别人电脑去测试,没问题,成功运行,证明了maven没问题,证明了war包没问题,证明了之前的想法是错的.

  2.测试tomcat和idea

  跟之前一样,先脱离idea环境测试tomcat,删掉work目录,删除掉webapp下的工程,将之前打的war包放到webapp下,然后找到bin目录下的startup.bat,点击运行,这时你会发现熟悉的错误又出现在你的面前,没关系,很快你就看不到了,显而易见,是你的tomcat出问题了.下面是异常信息:

十二月 17, 2016 10:13:31 上午 org.apache.catalina.loader.WebappClassLoader validateJarFile
信息: validateJarFile(F:\eclipseworkspace\pop-auction-center-law_new\pop-auction-center-web\target\pop-auction-center-web\WEB-INF\lib\servlet-api-2.5.jar) - jar not loaded. See Servlet Spec 2.3, section 9.7.2. Offending class: javax/servlet/Servlet.class
十二月 17, 2016 10:13:40 上午 org.apache.catalina.startup.HostConfig deployDirectory
信息: Deploying web application directory manager
十二月 17, 2016 10:13:46 上午 org.apache.tomcat.util.modeler.BaseModelMBean invoke
严重: Exception invoking method manageApp
java.lang.IncompatibleClassChangeError: Implementing class
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:2775)
at org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:1115)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1610)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1488)
at org.apache.catalina.startup.ContextConfig.checkHandlesTypes(ContextConfig.java:1945)
at org.apache.catalina.startup.ContextConfig.processAnnotationsStream(ContextConfig.java:1908)
at org.apache.catalina.startup.ContextConfig.processAnnotationsJar(ContextConfig.java:1795)
at org.apache.catalina.startup.ContextConfig.processAnnotationsUrl(ContextConfig.java:1754)
at org.apache.catalina.startup.ContextConfig.processAnnotations(ContextConfig.java:1740)
at org.apache.catalina.startup.ContextConfig.webConfig(ContextConfig.java:1245)
at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:874)
at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:317)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:89)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:4881)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:812)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:787)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:583)
at org.apache.catalina.startup.HostConfig.manageApp(HostConfig.java:1379)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)

  于是重新安装tomcat测试,果不其然,成功跑起来了,通过这次解决问题的过程让我明白了,陌生的问题并不是阻碍你继续前行的绊脚石,重要的是你是如何分析问题解决问题的,这一点很重要.

java.lang.IncompatibleClassChangeError: Implementing class的解决办法,折腾了一天总算解决了的更多相关文章

  1. 关于java.lang.IncompatibleClassChangeError: Implementing class错误解决

    在javaagent使用asm字节码编程的时候启动异常,java.lang.IncompatibleClassChangeError: Implementing class, 这是包冲突引起的问题,加 ...

  2. java.lang.IncompatibleClassChangeError: Implementing class

    项目中使用了quartz,但是jar包却有两个,一个1.8版本,一个2.1版本,导致jar包冲突,所以导致一启动tomcat就出现: Caused by: java.lang.Incompatible ...

  3. Caused by: java.lang.IncompatibleClassChangeError: Implementing class

    Caused by: java.lang.IncompatibleClassChangeError: Implementing class 可能是导入的jar包重复. 尤其在Maven引用中,请查看是 ...

  4. 解决java.lang.IncompatibleClassChangeError: Implementing class

    jar包冲突(有重复jar) 仔细检查

  5. Maven的包依赖冲突可引发java.lang.IncompatibleClassChangeError错误

    新版API上线后,发现LOG文件没有正常输出.查看Tomcat的Log文件发现如下的错误信息 May , :: AM com.sun.xml.ws.server.sei.EndpointMethodH ...

  6. [ERROR] Terminal initialization failed; falling back to unsupported java.lang.IncompatibleClassChangeError: Found class jline.Terminal, but interface was expected

    1:出现此种错误应该是jar版本包冲突了,启动hive的时候,由于hive依赖hadoop,启动hive,会将hadoop的配置以及jar包等等导入到hive中,导致jar包版本冲突,下面贴一下错误, ...

  7. java.lang.IncompatibleClassChangeError:可以考虑是否是jar包冲突

    一.背景:启动tomcat的时候,报错: java.lang.IncompatibleClassChangeError: class org.springframework.core.type.cla ...

  8. 【JUnit 报错】java.lang.IncompatibleClassChangeError

    使用Junit 测试spring时候报错: java.lang.IncompatibleClassChangeError: class org.springframework.core.LocalVa ...

  9. 使用POI导入EXCEL报java.lang.IncompatibleClassChangeError

    使用POI导入xls格式的excel报java.lang.IncompatibleClassChangeError异常,而导入xlsx正常. oracle.apps.fnd.framework.OAE ...

随机推荐

  1. Atitit 图像处理 灰度图片 灰度化的原理与实现

    Atitit 图像处理 灰度图片 灰度化的原理与实现 24位彩色图与8位灰度图 首先要先介绍一下24位彩色图像,在一个24位彩色图像中,每个像素由三个字节表示,通常表示为RGB.通常,许多24位彩色图 ...

  2. C#学习系列-String与string的区别

    参考:http://www.microsoftvirtualacademy.com/Content/ViewContent.aspx?et=9851&m=9832&ct=31042 如 ...

  3. APP 版本更新 流程(已上架APP,提交新版本)

    背景: 今天发布app的新版本, 可是无奈换了电脑, 没有了以前上架时候的发布证书和描述文件. 但是没关系, 依然可以上传成功,哈哈哈~ 虽然走了很多弯路 - -|| 如果是向 App Store 提 ...

  4. 快速入门系列--WebAPI--01基础

    ASP.NET MVC和WebAPI已经是.NET Web部分的主流,刚开始时两个公用同一个管道,之后为了更加的轻量化(WebAPI是对WCF Restful的轻量化),WebAPI使用了新的管道,因 ...

  5. JVM快速学习

    最近开始了全面的JAVA生态环境学习,因此,JVM的学习是必不可少的一个环节.和.NET的CLR一样,一起的JAVA应用均跑在JVM虚拟机上,不过相对我们只能干看看的CLR,JVM有很大的灵活性,可以 ...

  6. haslayout详解

    定义 haslayout是IE7-浏览器的特有属性.hasLayout是一种只读属性,有两种状态:true或false.当其为true时,代表该元素有自己的布局,否则代表该元素的布局继承于父元素. [ ...

  7. Shell最多可以输入多少个参数?

    在脚本编写过程中,通常会涉及到参数的输入.譬如,sh 1.sh 10 20,在执行1.sh这个脚本中,10即为第一个参数,20即为第二个参数.有时,就会有这个疑惑,即shell脚本最多可以支持多少个变 ...

  8. 邻接矩阵有向图(二)之 C++详解

    本章是通过C++实现邻接矩阵有向图. 目录 1. 邻接矩阵有向图的介绍 2. 邻接矩阵有向图的代码说明 3. 邻接矩阵有向图的完整源码 转载请注明出处:http://www.cnblogs.com/s ...

  9. CSS命名

    CSS命名规范 CSS样式命名整理 页面结构 容器: container/wrap 整体宽度:wrapper 页头:header 内容:content 页面主体:main 页尾:footer 导航:n ...

  10. CSS 魔法系列:纯 CSS 绘制各种图形《系列六》

    我们的网页因为 CSS 而呈现千变万化的风格.这一看似简单的样式语言在使用中非常灵活,只要你发挥创意就能实现很多比人想象不到的效果.特别是随着 CSS3 的广泛使用,更多新奇的 CSS 作品涌现出来. ...