项目jdk/jar包冲突分析处理过程

来源:互联网 发布:知乎 不愿光顾迷你ktv 编辑:程序博客网 时间:2024/06/05 14:56

项目jdk/jar包冲突分析处理过程

今天从Git上拉了一个老项目到本地运行,一直报错不停,运行不成功。

Context initialization failed

经过查阅资料可能有是jdk版本过高原因,果断将jdk8、jdk7、jdk6都试了一次,果然在jdk6时运行报错有所不同之处。 
以下为第一次报错信息:

2017-06-08 11:51:55,518 [localhost-startStop-1] ERROR [org.springframework.web.context.ContextLoader] - Context initialization failedorg.springframework.beans.factory.BeanDefinitionStoreException: Failed to read candidate component class: file [/Users/user/Documents/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/platform-tool/WEB-INF/classes/com/tgb/dao/UserDao.class]; nested exception is java.lang.IllegalArgumentException    at org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider.findCandidateComponents(ClassPathScanningCandidateComponentProvider.java:281)    at org.springframework.context.annotation.ClassPathBeanDefinitionScanner.doScan(ClassPathBeanDefinitionScanner.java:242)    at org.springframework.context.annotation.ComponentScanBeanDefinitionParser.parse(ComponentScanBeanDefinitionParser.java:84)    at org.springframework.beans.factory.xml.NamespaceHandlerSupport.parse(NamespaceHandlerSupport.java:73)    at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDelegate.java:1435)    at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDelegate.java:1425)    at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.parseBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:184)    at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.doRegisterBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:140)    at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.registerBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:111)    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.registerBeanDefinitions(XmlBeanDefinitionReader.java:493)    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:390)    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:334)    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:302)    at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:174)    at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:209)    at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:180)    at org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:125)    at org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:94)    at org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:131)    at org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:537)    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:451)    at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:383)    at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:283)    at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:112)    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:5118)    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5634)    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145)    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1571)    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1561)    at java.util.concurrent.FutureTask.run(FutureTask.java:266)    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)    at java.lang.Thread.run(Thread.java:745)Caused by: java.lang.IllegalArgumentException    at org.springframework.asm.ClassReader.<init>(Unknown Source)    at org.springframework.asm.ClassReader.<init>(Unknown Source)    at org.springframework.asm.ClassReader.<init>(Unknown Source)    at org.springframework.core.type.classreading.SimpleMetadataReader.<init>(SimpleMetadataReader.java:52)    at org.springframework.core.type.classreading.SimpleMetadataReaderFactory.getMetadataReader(SimpleMetadataReaderFactory.java:80)    at org.springframework.core.type.classreading.CachingMetadataReaderFactory.getMetadataReader(CachingMetadataReaderFactory.java:101)    at org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider.findCandidateComponents(ClassPathScanningCandidateComponentProvider.java:257)    ... 32 more
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44

Controller控制器时报错

然后将所有java代码进行了移出和注释操作,发现空项目是可以运行成功的,但只要一创建Controller时就会报以下错误。 
此时jdk版本为7.0,报错内容如下:

2017-06-08 20:28:30,669 [localhost-startStop-1] ERROR [org.springframework.web.context.ContextLoader] - Context initialization failedjava.lang.IllegalArgumentException    at org.springframework.asm.ClassReader.<init>(Unknown Source)    at org.springframework.asm.ClassReader.<init>(Unknown Source)    at org.springframework.asm.ClassReader.<init>(Unknown Source)    at org.springframework.core.type.classreading.SimpleMetadataReader.<init>(SimpleMetadataReader.java:52)    at org.springframework.core.type.classreading.SimpleMetadataReaderFactory.getMetadataReader(SimpleMetadataReaderFactory.java:80)    at org.springframework.core.type.classreading.CachingMetadataReaderFactory.getMetadataReader(CachingMetadataReaderFactory.java:101)    at org.springframework.core.type.classreading.SimpleMetadataReaderFactory.getMetadataReader(SimpleMetadataReaderFactory.java:76)    at org.springframework.context.annotation.ConfigurationClassParser.getImports(ConfigurationClassParser.java:298)    at org.springframework.context.annotation.ConfigurationClassParser.getImports(ConfigurationClassParser.java:300)    at org.springframework.context.annotation.ConfigurationClassParser.getImports(ConfigurationClassParser.java:300)    at org.springframework.context.annotation.ConfigurationClassParser.doProcessConfigurationClass(ConfigurationClassParser.java:230)    at org.springframework.context.annotation.ConfigurationClassParser.processConfigurationClass(ConfigurationClassParser.java:153)    at org.springframework.context.annotation.ConfigurationClassParser.parse(ConfigurationClassParser.java:130)    at org.springframework.context.annotation.ConfigurationClassPostProcessor.processConfigBeanDefinitions(ConfigurationClassPostProcessor.java:285)    at org.springframework.context.annotation.ConfigurationClassPostProcessor.postProcessBeanDefinitionRegistry(ConfigurationClassPostProcessor.java:223)    at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:630)    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:461)    at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:383)    at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:283)    at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:112)    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:5118)    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5634)    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145)    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1571)    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1561)    at java.util.concurrent.FutureTask.run(FutureTask.java:266)    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)    at java.lang.Thread.run(Thread.java:745)六月 08, 2017 8:28:30 下午 org.apache.catalina.core.StandardContext listenerStart严重: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListenerjava.lang.IllegalArgumentException
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34

替换spring版本

经过查看发现spring版本为3.2,网上说jdk7以上兼容的spring版本为4.0。 
但我想jdk6兼容spring3.2应该没问题,但运行还是不成功。只能替换spring 4.0版本上去了。 
换spring版本之后报错如下:

六月 08, 2017 10:49:49 下午 org.apache.catalina.core.ApplicationContext log严重: StandardWrapper.Throwablejava.lang.NoSuchMethodError: org.springframework.web.context.ConfigurableWebApplicationContext.getEnvironment()Lorg/springframework/web/context/ConfigurableWebEnvironment;    at org.springframework.web.servlet.FrameworkServlet.configureAndRefreshWebApplicationContext(FrameworkServlet.java:641)    at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:598)    at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:661)    at org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:517)    at org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:458)    at org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:138)------>    at javax.servlet.GenericServlet.init(GenericServlet.java:158)    at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1269)    at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1182)    at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:853)    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:134)    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:110)    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:506)    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:169)    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:962)    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:445)    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1087)    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:637)    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316)    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)    at java.lang.Thread.run(Thread.java:745)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28

这里写图片描述

这里写图片描述

发现有时候java的异常错误并不能直接反映问题所在,这点没有php错误异常明白样。

替换jar包不彻底

经过点击报错代码 org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:138) 发现spring-web.jar包的版本还是3.2,没有替换掉所致。 
替换运行以后正常。

总结

1、切换不同的jdk版本进行项目运行,查看报错内容,以确定是否为jdk版本问题导致。 
2、关注jar包版本,是否与当前jdk版本兼容 
3、仔细分析异常日志内容


原创粉丝点击