因爲安裝了 JDK1.8 的版本,最近在進行整合 Struts2+Spring+Hibernate 框架的時候,不當心導入了以前下載的 Spring 3.2.0 版本的 jar 包。java
結果在運行測試用例的時候,老是顯示紅條,報出 java.lang.IllegalStateException: Failed to load ApplicationContext 的錯誤。web
異常描述:spring
1 java.lang.IllegalStateException: Failed to load ApplicationContext 2 at org.springframework.test.context.TestContext.getApplicationContext 3 (TestContext.java:157) 4 at 5 org.springframework.test.context.web.ServletTestExecutionListener. 6 setUpRequestContextIfNecessary(ServletTestExecutionListener.java:103) 7 at 8 org.springframework.test.context.web.ServletTestExecutionListener.prepareTestInstance 9 (ServletTestExecutionListener.java:73) 10 at org.springframework.test.context.TestContextManager.prepareTestInstance 11 (TestContextManager.java:313) 12 at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.createTest 13 (SpringJUnit4ClassRunner.java:211) 14 at org.springframework.test.context.junit4.SpringJUnit4ClassRunner 15 $1.runReflectiveCall(SpringJUnit4ClassRunner.java:288) 16 at org.junit.internal.runners.model.ReflectiveCallable.run 17 (ReflectiveCallable.java:12) 18 at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.methodBlock 19 (SpringJUnit4ClassRunner.java:284) 20 at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild 21 (SpringJUnit4ClassRunner.java:231) 22 at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild 23 (SpringJUnit4ClassRunner.java:88) 24 at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290) 25 at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71) 26 at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288) 27 at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58) 28 at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268) 29 at 30 org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate 31 (RunBeforeTestClassCallbacks.java:61) 32 at 33 org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate 34 (RunAfterTestClassCallbacks.java:71) 35 at org.junit.runners.ParentRunner.run(ParentRunner.java:363) 36 at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run 37 (SpringJUnit4ClassRunner.java:174) 38 at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run 39 (JUnit4TestReference.java:86) 40 at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) 41 at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests 42 (RemoteTestRunner.java:459) 43 at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests 44 (RemoteTestRunner.java:678) 45 at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run 46 (RemoteTestRunner.java:382) 47 at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main 48 (RemoteTestRunner.java:192) 49 Caused by: java.lang.IllegalArgumentException 50 at org.springframework.asm.ClassReader.<init>(Unknown Source) 51 at org.springframework.asm.ClassReader.<init>(Unknown Source) 52 at org.springframework.asm.ClassReader.<init>(Unknown Source) 53 at org.springframework.core.type.classreading.SimpleMetadataReader.<init> 54 (SimpleMetadataReader.java:52) 55 at 56 org.springframework.core.type.classreading.SimpleMetadataReaderFactory.getMetadataReader 57 (SimpleMetadataReaderFactory.java:80) 58 at 59 org.springframework.core.type.classreading.CachingMetadataReaderFactory.getMetadataReader 60 (CachingMetadataReaderFactory.java:101) 61 at 62 org.springframework.core.type.classreading.SimpleMetadataReaderFactory.getMetadataReader 63 (SimpleMetadataReaderFactory.java:76) 64 at 65 org.springframework.context.annotation.ConfigurationClassUtils. 66 checkConfigurationClassCandidate(ConfigurationClassUtils.java:70) 67 at 68 org.springframework.context.annotation.ConfigurationClassPostProcessor. 69 processConfigBeanDefinitions(ConfigurationClassPostProcessor.java:253) 70 at 71 org.springframework.context.annotation.ConfigurationClassPostProcessor. 72 postProcessBeanDefinitionRegistry(ConfigurationClassPostProcessor.java:223) 73 at 74 org.springframework.context.support.AbstractApplicationContext. 75 invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:630) 76 at org.springframework.context.support.AbstractApplicationContext.refresh 77 (AbstractApplicationContext.java:461) 78 at 79 org.springframework.test.context.support.AbstractGenericContextLoader.loadContext 80 (AbstractGenericContextLoader.java:106) 81 at 82 org.springframework.test.context.support.AbstractGenericContextLoader.loadContext 83 (AbstractGenericContextLoader.java:57) 84 at 85 org.springframework.test.context.support.AbstractDelegatingSmartContextLoader. 86 delegateLoading(AbstractDelegatingSmartContextLoader.java:100) 87 at 88 org.springframework.test.context.support.AbstractDelegatingSmartContextLoader.loadContext 89 (AbstractDelegatingSmartContextLoader.java:248) 90 at org.springframework.test.context.TestContext.loadApplicationContext 91 (TestContext.java:124) 92 at org.springframework.test.context.TestContext.getApplicationContext 93 (TestContext.java:148) 94 ... 24 more
經查明問題的緣由是:安裝的 JDK 版本和 Myeclipse 項目 lib 中導入的 Spring 的 jar 包版本存在不兼容的狀況。api
解決辦法:框架
一:把 JDK 版本換成1.7 or 1.7如下eclipse
二:使用 Spring 4.0 RELEASE 及以上版本post
關於 JDK 各個版本的下載:測試
能夠點擊連接:http://java.sun.com/products/archive/lua
關於 Spring 各個版本 jar 包的下載:spa
能夠點擊連接:http://repo.spring.io
鼠標點擊左側導航欄 –> 符號展開菜單選擇 Artifacts 選項 –> 選擇子菜單下的 libs-release-local 選項 –> 依次進入其子目錄 org/springframework/spring 就能夠看到 spring 各版本信息了 –> 選擇須要的 spring 版本 ( 例如 4.3.8.RELEASE ,點擊打開選擇 spring-framework-4.3.8.RELEASE-dist.zip ),下載解壓便可得到 jar 包、api 等文件。