错误代码
Exception in thread "main" org.springframework.beans.factory.BeanDefinitionStoreException: Failed to read candidate component class: file [D:\workspace\TestDaoDao\build\classes\org\note\dao\UserDao.class]; nested exception is org.springframework.core.NestedIOException:
ASM ClassReader failed to parse class file - probably due to a new Java class file version that isn't supported yet: file [D:\workspace\TestDaoDao\build\classes\org\note\dao\UserDao.class]; nested exception is java.lang.IllegalArgumentException
at org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider.findCandidateComponents(ClassPathScanningCandidateComponentProvider.java:290)
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:1438)
at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDelegate.java:1428)
at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.parseBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:195)
at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.doRegisterBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:139)
at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.registerBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:108)
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.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:243)
at org.springframework.context.support.AbstractXmlApplicationContext.loadBeanDefinitions(AbstractXmlApplicationContext.java:127)
at org.springframework.context.support.AbstractXmlApplicationContext.loadBeanDefinitions(AbstractXmlApplicationContext.java:93)
at org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:130)
at org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:537)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:451)
at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:139)
at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:83)
at org.note.test.Test.main(Test.java:35)
Caused by: org.springframework.core.NestedIOException: ASM ClassReader failed to parse class file - probably due to a new Java class file version that isn't supported yet: file [D:\workspace\TestDaoDao\build\classes\org\note\dao\UserDao.class]; nested exception
is java.lang.IllegalArgumentException
at org.springframework.core.type.classreading.SimpleMetadataReader.<init>(SimpleMetadataReader.java:56)
at org.springframework.core.type.classreading.SimpleMetadataReaderFactory.getMetadataReader(SimpleMetadataReaderFactory.java:80)
at org.springframework.core.type.classreading.CachingMetadataReaderFactory.getMetadataReader(CachingMetadataReaderFactory.java:102)
at org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider.findCandidateComponents(ClassPathScanningCandidateComponentProvider.java:266)
... 24 more
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:53)
... 27 more
我的jdk版本是1.8.0_45,可以在cmd里直接输入java -version回车键查到 我的spring的jar包是3.2.8版本
记录一下我出现这个错误的一个心理过程:
我先问度娘,很多人都给出了同样的答案,那就是不兼容,要不Spring版本升级,要不JDK版本更低;
Spring的jar包升级这对于我来说,徒劳无功,因为最起码有6个jar包需要更新,没必要;所以我决定更换JDK版本
那我就开始将JDK版本更换成更低的版本,有两种方法:一种是Windows--->Preferences--->Java--->Compiler;
一种是自己从网上下载一个JDK版本,然后Windows--->Preferences--->Java--->Installed JREs-->Add添加JDK
安装目录。我两种方法都尝试了,然后再次运行文件,发现还是同样的错误。我就觉得网上大家说的都是胡说八道。
自己又折腾了一个小时(浪费了一个小时),还是不行,又去找度娘;然后有人说可以看看项目下的JRE System Library
的版本,以此来确定项目是否已经更换了JDK版本。我再次觉得不靠谱,就连看一眼都不想看,又浑浑噩噩地过去了
1小时,脑子顿时清醒了,这才明白大家说的都是对的。
项目还是会出错的原因是因为创建的时候版本就是8,即使已经更换过版本,但是当前的项目的版本是不会变的,
这时就需要再创建一个新的项目,然后将需要的代码拖过来。
其实,我之前就遇到过这种问题,但是我并没有去总结,致使我现在还必须再花费时间精力去解决它。从现在开始,
遇到的问题都要总结,为此,我开始用博客记录我的代码之路,也是我的人生之路。
人是很奇怪的,总是会让自己陷入一种徒劳无功的心绪中,即使心里很难受,也不愿意立即调整。我想说的是,
为了使自己每时每刻开心快乐,要经常让自己从徒劳无功的心绪中跳出来。这个无论什么问题,都变得如此简单。