解决IntelliJ IDEA报错Failed to read candidate component class: file [ ]; nested exception is org.
解決IntelliJ IDEA報錯Failed to read candidate component class: file [ ]; nested exception is org.springframework.core.NestedIOException
??筆者使用 IntelliJ IDEA 運行以前的一個 Spring 項目時,以前記得運行正常的代碼,如今一直報錯,百思不得其解。然后發現報錯發生在一個普通、基礎性的 Spring 方法。筆者當時報錯時的運行環境如下:
筆者報錯時的運行環境:
-
JDK 13.0.2
-
IntelliJ IDEA 2020.1.2 (Ultimate Edition)
-
Spring 5.1.9.RELEASE
??這個報錯的信息如下:
Exception in thread "XXX" org.springframework.beans.factory.BeanDefinitionStoreException: Failed to read candidate component class: file [XXX.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 [XXX.class]; nested exception is java.lang.IllegalArgumentException: Unsupported class file major version 57at org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider.scanCandidateComponents(ClassPathScanningCandidateComponentProvider.java:454)at org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider.findCandidateComponents(ClassPathScanningCandidateComponentProvider.java:316)at org.springframework.context.annotation.ClassPathBeanDefinitionScanner.doScan(ClassPathBeanDefinitionScanner.java:275)at org.springframework.context.annotation.ComponentScanBeanDefinitionParser.parse(ComponentScanBeanDefinitionParser.java:90)at org.springframework.beans.factory.xml.NamespaceHandlerSupport.parse(NamespaceHandlerSupport.java:74)at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDelegate.java:1391)at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDelegate.java:1371)at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.parseBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:179)at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.doRegisterBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:149)at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.registerBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:96)at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.registerBeanDefinitions(XmlBeanDefinitionReader.java:513)at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:393)at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:336)at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:304)at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:188)at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:224)at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:195)at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:257)at org.springframework.context.support.AbstractXmlApplicationContext.loadBeanDefinitions(AbstractXmlApplicationContext.java:128)at org.springframework.context.support.AbstractXmlApplicationContext.loadBeanDefinitions(AbstractXmlApplicationContext.java:94)at org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:133)at org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:636)at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:521)at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:144)at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:85)at XXX(XXX:XXX) 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 [XXX.class]; nested exception is java.lang.IllegalArgumentException: Unsupported class file major version 57at org.springframework.core.type.classreading.SimpleMetadataReader.<init>(SimpleMetadataReader.java:57)at org.springframework.core.type.classreading.SimpleMetadataReaderFactory.getMetadataReader(SimpleMetadataReaderFactory.java:103)at org.springframework.core.type.classreading.CachingMetadataReaderFactory.getMetadataReader(CachingMetadataReaderFactory.java:123)at org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider.scanCandidateComponents(ClassPathScanningCandidateComponentProvider.java:430)... 25 more Caused by: java.lang.IllegalArgumentException: Unsupported class file major version 57at org.springframework.asm.ClassReader.<init>(ClassReader.java:184)at org.springframework.asm.ClassReader.<init>(ClassReader.java:166)at org.springframework.asm.ClassReader.<init>(ClassReader.java:152)at org.springframework.asm.ClassReader.<init>(ClassReader.java:273)at org.springframework.core.type.classreading.SimpleMetadataReader.<init>(SimpleMetadataReader.java:54)... 28 more??筆者在經過反復試驗排錯后,終于找到了根因。這是因為筆者報錯時,使用的 Spring 依賴與 JDK 版本不兼容所導致的。因為筆者當初成功運行該項目時,使用的是低版本的 JDK,而現在運行該項目時,使用的是現在安裝的 JDK。換句話說,相對于 Spring 的版本Spring 5.1.9.RELEASE,JDK 的版本JDK 13.0.2太高了。
??于是,筆者調高 Spring 的版本,將Spring 5.1.9.RELEASE改為Spring 5.2.9.RELEASE,結果運行之后,上面的報錯就消失了。當然,也可以選擇降低 JDK 的版本,不過筆者通常不喜歡這樣做。
筆者成功運行時的運行環境:
-
JDK 13.0.2
-
IntelliJ IDEA 2020.1.2 (Ultimate Edition)
-
Spring 5.2.9.RELEASE
總結
以上是生活随笔為你收集整理的解决IntelliJ IDEA报错Failed to read candidate component class: file [ ]; nested exception is org.的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: fork 与 branch、clone
- 下一篇: 同步与异步、并行与并发、阻塞与挂起