2013-05-30 172 views
2

當我嘗試運行我的java控制檯應用程序時,我在Red Hat 5上看到以下錯誤,但在Ubuntu上看到以下錯誤。運行Java應用程序時的NoSuchMethodError

另一個StackOverflow的post提到不要混用的spring 2和3

版本,但我跑find [where I run app - includes classpath] | grep spring | grep 3,看到0的結果。因此,我相信這不是spring版本問題。

> Exception in thread "main" 
> org.springframework.beans.factory.parsing.BeanDefinitionParsingException: 
> Configuration problem: Failed to import bean definitions from URL 
> location 
> [classpath:/org/eurekastreams/server/conf/applicationContext-model.xml] 
> Offending resource: class path resource [conf/applicationContext.xml]; 
> nested exception is 
> org.springframework.beans.factory.BeanDefinitionStoreException: 
> Unexpected exception parsing XML document from class path resource 
> [org/eurekastreams/server/conf/applicationContext-model.xml]; nested 
> exception is java.lang.NoSuchMethodError:org.springframework.aop.config. 
AopNamespaceUtils.registerAutoProxyCreatorIfNecessary 
(Lorg/springframework/beans/factory/xml/ParserContext; 
Lorg/w3c/dom/Element;)V 

編輯

增加堆棧跟蹤:

Caused by: java.lang.NoSuchMethodError: org.springframework.aop.config.AopNamespaceUtils.registerAutoProxyCreatorIfNecessary(Lorg/springframework/beans/factory/xml/ParserContext;Lorg/w3c/dom/Element;)V

運行mvn dependency:tree後,我看到的spring-aop.jar幾個版本:

$grep "spring-aop" mvn_dependency_tree.txt 
    [INFO] | +- org.springframework:spring-aop:jar:2.0.8:compile 
    [INFO] | | | +- org.springframework:spring-aop:jar:2.0.8:provided 
    [INFO] | | +- org.springframework:spring-aop:jar:2.0.8:compile 
    [INFO] | | +- org.springframework:spring-aop:jar:2.5.4:compile 

這些不同版本的spring-aop可能會解釋我添加的堆棧跟蹤中的AOP錯誤?

+3

我懷疑你的問題還是在類路徑中的多個版本的春天,只是也許不是版本2和3 – JamesB

+0

約定外,看起來你很可能有版本衝突。除此之外,您不提供足夠的信息來提供任何輸入。 –

+0

嗯。如果我在同一個目錄下運行應用程序,在Ubuntu和RHEL上運行'$ CLASSPATH',那麼這個錯誤怎麼會發生在一個目錄中,而不是另一個呢? –

回答

1

它看起來像春天的AOP的2.0.8版本是這裏的罪魁禍首。

你需要做的是檢查的依賴關係樹輸出(沒有用grep顯示它),以找出「父」罐子對這個版本的依賴關係,因此被拉扯到你的類路徑。通過刪除或升級父容器的版本,您應該能夠清除類路徑,並留下版本2.5.4。

一旦你做到了這一點,重建並運行應用程序。

這裏是依賴樹的更多信息:

http://maven.apache.org/plugins/maven-dependency-plugin/index.html

http://maven.apache.org/plugins/maven-dependency-plugin/examples/resolving-conflicts-using-the-dependency-tree.html

+0

其實,我跟寫這個應用程序的人說話。他告訴我,有一個'RPM',一旦安裝,就會作爲一項服務運行。它指定'$ CLASSPATH',以及運行'java'應用程序的其他配置。 –