java.lang.IncompatibleClassChangeError: Implementing class的處理方法,折騰了一天總算處理了。本站提示廣大學習愛好者:(java.lang.IncompatibleClassChangeError: Implementing class的處理方法,折騰了一天總算處理了)文章只能為提供參考,不一定能成為您想要的結果。以下是java.lang.IncompatibleClassChangeError: Implementing class的處理方法,折騰了一天總算處理了正文
一,問題發生背景
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測試,果不其然,成功跑起來了,經過這次處理問題的進程讓我明白了,生疏的問題並不是障礙你持續前行的絆腳石,重要的是你是如何剖析問題處理問題的,這一點很重要.