学堂 学堂 学堂公众号手机端

SpringMVC异常信息ASMClassReaderfailedtoparseclassfile的问题解决

lewis 1年前 (2024-03-28) 阅读数 4 #技术


1. 环境信息:

Spring 3.2.0, JDK 1.8.0

2. 运行简单的程序,出现以下错误信息:

2. 运行简单的程序,出现以下错误信息:

Causedby:org.springframework.beans.factory.BeanDefinitionStoreException:Failedtoreadcandidatecomponentclass:file[D:\NewWorkSpace\ep-user\target\test-classes\org\homework\ep\user\base\BaseTest.class];nestedexceptionisorg.springframework.core.NestedIOException:ASMClassReaderfailedtoparseclassfile-probablyduetoanewJavaclassfileversionthatisn'tsupportedyet:file[D:\NewWorkSpace\ep-user\target\test-classes\org\homework\ep\user\base\BaseTest.class];nestedexceptionisjava.lang.IllegalArgumentExceptionatorg.springframework.context.annotation.ClassPathScanningCandidateComponentProvider.findCandidateComponents(ClassPathScanningCandidateComponentProvider.java:290)atorg.springframework.context.annotation.ClassPathBeanDefinitionScanner.doScan(ClassPathBeanDefinitionScanner.java:242)atorg.springframework.context.annotation.ComponentScanBeanDefinitionParser.parse(ComponentScanBeanDefinitionParser.java:84)atorg.springframework.beans.factory.xml.NamespaceHandlerSupport.parse(NamespaceHandlerSupport.java:73)atorg.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDelegate.java:1438)atorg.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDelegate.java:1428)atorg.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.parseBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:185)atorg.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.doRegisterBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:139)atorg.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.registerBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:108)atorg.springframework.beans.factory.xml.XmlBeanDefinitionReader.registerBeanDefinitions(XmlBeanDefinitionReader.java:493)atorg.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:390)atorg.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:334)atorg.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:302)atorg.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:174)atorg.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:209)atorg.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:180)atorg.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:243)atorg.springframework.test.context.support.AbstractGenericContextLoader.loadBeanDefinitions(AbstractGenericContextLoader.java:233)atorg.springframework.test.context.support.AbstractGenericContextLoader.loadContext(AbstractGenericContextLoader.java:117)atorg.springframework.test.context.support.AbstractGenericContextLoader.loadContext(AbstractGenericContextLoader.java:60)atorg.springframework.test.context.support.AbstractDelegatingSmartContextLoader.delegateLoading(AbstractDelegatingSmartContextLoader.java:100)atorg.springframework.test.context.support.AbstractDelegatingSmartContextLoader.loadContext(AbstractDelegatingSmartContextLoader.java:248)atorg.springframework.test.context.CacheAwareContextLoaderDelegate.loadContextInternal(CacheAwareContextLoaderDelegate.java:64)atorg.springframework.test.context.CacheAwareContextLoaderDelegate.loadContext(CacheAwareContextLoaderDelegate.java:91)...25moreCausedby:org.springframework.core.NestedIOException:ASMClassReaderfailedtoparseclassfile-probablyduetoanewJavaclassfileversionthatisn'tsupportedyet:file[D:\NewWorkSpace\ep-user\target\test-classes\org\homework\ep\user\base\BaseTest.class];nestedexceptionisjava.lang.IllegalArgumentException<init>(SimpleMetadataReader.java:56)atorg.springframework.core.type.classreading.SimpleMetadataReaderFactory.getMetadataReader(SimpleMetadataReaderFactory.java:80)atorg.springframework.core.type.classreading.CachingMetadataReaderFactory.getMetadataReader(CachingMetadataReaderFactory.java:102)atorg.springframework.context.annotation.ClassPathScanningCandidateComponentProvider.findCandidateComponents(ClassPathScanningCandidateComponentProvider.java:266)...48moreCausedby:java.lang.IllegalArgumentException<init>(UnknownSource)<init>(UnknownSource)<init>(UnknownSource)<init>(SimpleMetadataReader.java:53)...51more

3. 问题分析

“ASM ClassReader failed to parse class file”是其中主要的原因。检查Maven的类库,没有发现问题,无asm显性依赖,其依赖产生于spring本身。故分析有可能是spring本身的 问题造成了;但是这么流行的spring,怎么会出错了,我不能这么牛x碰到这么简单的问题吧?

难道是版本?除了版本之外,spring无大区别。经过一般搜索,网上还真有类似的问题:

NotethattheJava8bytecodelevel(-target1.8,asrequiredby-source1.8)isonlyfullysupportedasofSpringFramework4.0.Inparticular,Spring3.2basedapplicationsneedtobecompiledwithamaximumofJava7asthetarget,eveniftheyhappentobedeployedontoaJava8runtime.<spanstyle="font-family:Arial,'HelveticaNeue',Helvetica,sans-serif;color:#222222;font-size:15px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:19.5px;orphans:auto;text-align:left;text-indent:0px;text-transform:none;white-space:normal;widows:auto;word-spacing:0px;-webkit-text-stroke-width:0px;display:inline!important;float:none;background-color:rgb(255,249,227);">PleaseupgradetoSpring4forJava8basedapplications.</span>

所以,看明白了吧,方案有两条:

a. 使用jdk7

b. 升级spring 4

4. 问题解决

最终选择了升级Spring4.1.7, 然后问题解决。



版权声明

本文仅代表作者观点,不代表博信信息网立场。

热门