2015-11-24 104 views
0

我有一個基於Eclipse乳寧的一個項目,但是當我做「Java的罐子」它給出了這樣的錯誤:AnnotationAwareAspectJAutoProxyCreator僅適用於Java 1.5和更高

Exception in thread "main" org.springframework.beans.factory.BeanDefinitionStoreException: Unexpected exception parsing XML document from class path resource [Beans.xml]; nested 
java.lang.IllegalStateException: AnnotationAwareAspectJAutoProxyCreator is only available on Java 1.5 and higher 
     at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:420) 
     at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:342) 
     at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:310) 
     at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:143) 
     at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:178) 
     at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:149) 
     at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:212) 
     at org.springframework.context.support.AbstractXmlApplicationContext.loadBeanDefinitions(AbstractXmlApplicationContext.java:113) 
     at org.springframework.context.support.AbstractXmlApplicationContext.loadBeanDefinitions(AbstractXmlApplicationContext.java:80) 
     at org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:123) 
     at org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:422) 
     at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:352) 
     at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:139) 
     at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:83) 
     at pt.myCompany.myProduct.integrator.Integrator.init(Integrator.java:27) 
     at pt.myCompany.myProduct.integrator.jobs.RequstSentToProvider.execute(RequstSentToProvider.java:24) 
     at pt.myCompany.integrador.jobSchedule.RunRequstSentToProvider.main(RunRequstSentToProvider.java:10) 
Caused by: java.lang.IllegalStateException: AnnotationAwareAspectJAutoProxyCreator is only available on Java 1.5 and higher 
     at org.springframework.aop.config.AopConfigUtils.getAspectJAnnotationAutoProxyCreatorClassIfPossible(AopConfigUtils.java:134) 
     at org.springframework.aop.config.AopConfigUtils.registerAspectJAnnotationAutoProxyCreatorIfNecessary(AopConfigUtils.java:99) 
     at org.springframework.aop.config.AopNamespaceUtils.registerAspectJAnnotationAutoProxyCreatorIfNecessary(AopNamespaceUtils.java:71) 
     at org.springframework.aop.config.AspectJAutoProxyBeanDefinitionParser.parse(AspectJAutoProxyBeanDefinitionParser.java:41) 
     at org.springframework.beans.factory.xml.NamespaceHandlerSupport.parse(NamespaceHandlerSupport.java:69) 
     at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDelegate.java:1297) 
     at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDelegate.java:1287) 
     at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.parseBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:135) 
     at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.registerBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:92) 
     at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.registerBeanDefinitions(XmlBeanDefinitionReader.java:507) 
     at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:398) 
     ... 16 more 

當我做「的java -version」輸出爲:

java version "1.8.0_31" 
Java(TM) SE Runtime Environment (build 1.8.0_31-b13) 
Java HotSpot(TM) 64-Bit Server VM (build 25.31-b07, mixed mode) 

我在做什麼錯?

+0

升級你的spring版本或者在eclipse中使用相同的JDK。 –

+0

所使用的JVM沒有提及編譯後的字節碼。可能您的代碼或其中的一部分編譯目標版本低於1.5。這只是一個有教養的猜測,很難,因爲我看不到你的代碼。你可以用JDK中的'javap'來檢查它。 – kriegaex

回答

0

我想你正在使用Maven。 也許你錯過了一些aspectj庫?

嘗試添加以下內容到pom.xml

<dependency> 
    <groupId>org.aspectj</groupId> 
    <artifactId>aspectjrt</artifactId> 
    <version>1.7.3</version>  
</dependency> 
<dependency> 
    <groupId>org.aspectj</groupId> 
    <artifactId>aspectjweaver</artifactId> 
    <version>1.7.3</version> 
</dependency> 
+0

謝謝你的幫助,但那沒有奏效。 我發現的唯一解決方案是刪除aop依賴項並將其從「Beans.xml」中移除 –

0

也許你可以改變你的jdk version.I改變我的JDK版本到1.7,那麼這個項目可以運行權

+0

這並不能真正回答問題 –

2

@MaggieX是沒有錯的 - 您正在運行一個Spring版本,該版本擁有一個瞭解Java 1.7但不是Java 1.8的if語句。它假定它不能匹配運行Java 1.4的1.5,1.6或1.7。

因此,降級到1.7是一種解決方法。升級Spring版本是一個修復。在這裏還有其他回答的問題,其中有人通過從源代碼重建Spring 2.5 jar來添加Java 1.8支持。比照https://stackoverflow.com/a/32487035

0

我也得到了完全相同的錯誤。我注意到,當我將JAVA_HOME系統變量設置爲JDK版本1.8時,我得到了Jp Felgueiras提到的錯誤,並切換到了JDK版本1.7,我的代碼工作正常,所以看起來老版本的Spring代碼存在一些問題,而且這可能會那麼是因爲代碼是spring core org.springframework.core.JdkVersion.java,這段代碼處理JDK版本1.4(默認),1.5,1.6和1.7。這意味着如果你的Java版本不是1.5,1.6或1.7,那麼它將被視爲1.4,所以你得到的錯誤提示用戶Java版本爲1.5或更高版本。希望這將幫助任何人偶然發現了這個問題

0

嗨請到工作區/項目/ .setting(隱藏文件夾)/編輯org.eclipse.wst.common.component Java版本1.5蝕到1.7或更高

相關問題