2011-03-02 102 views
1

出於某種原因,'grails war'在「WEB-INF/lib」中包含'groovy-1.6.9.jar'和'groovy-all-1.7.8.jar'文件。我與Grails的1.3.7工作,當我部署在Tomcat中這場戰爭,我收到以下錯誤:Groovy舊版Grails戰爭

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'pluginManager' defined in ServletContext resource [/WEB-INF/applicationContext.xml]: Invocation of init method failed; nested exception is java.lang.NoSuchMethodError: org.codehaus.groovy.control.SourceUnit.getSource()Lorg/codehaus/groovy/control/io/ReaderSource;

我能夠部署戰爭的唯一方式是移除舊的常規文件,該應用程序運行良好。

我調試的依賴過程和所有我能找到的是這樣的:

[NOT REQUIRED] org.codehaus.groovy#groovy;1.6.9!groovy.jar 
... 
:: evicted modules: 
junit#junit;3.8.2 by [junit#junit;4.8.1] in [test] 
      in org.codehaus.groovy#groovy;1.6.9 with latest-revision 

所以,我繼續和到了的文件「org.codehaus.groovy.modules.http建設者/ HTTP建設者/常春藤0.5.0-RC2.xml」,這包含以下內容:

<dependency org="org.codehaus.groovy" name="groovy" rev="[1.5,1.6.99)" 

我改變此行以‘[1.7,1.7.8)’和依賴性過程工作正常,現在戰爭的部署沒有任何問題,但我從來沒有碰過這個,我很擔心。這是繼續使用Grails依賴關係的正確方法嗎?

所有這些在安裝JQuery UI插件後開始發生,即使在刪除它之後,問題仍然存在。

感謝

回答

9

看起來你有HTTP的建設者在你的依賴在BuildConfig.groovy阻塞。 http-builder引入groovy作爲傳遞依賴。您需要排除它以避免與Groovy發生衝突 - 所有這些與Grails一起提供。

compile("org.codehaus.groovy.modules.http-builder:http-builder:0.5.0") { 
    excludes 'groovy', 'xml-apis' 
} 

(注:上面的示例中不包括XML的API,以及,你可能想這樣做,如果你在Java 6中,以避免重複類)

要追查這樣的衝突,你可以使用命令:

grails dependency-report 

這下目標/依賴報告生成一個報告/

+0

我沒有在BuildConfig這種依賴性。回顧結果,似乎我的應用程序具有Apache HTTPClient的這種依賴關係。無論如何,我已經按照原樣添加了示例,並且使用http-builder:0.5.0和http-builder:0.5.0-RC2創建了這場戰爭。我想我可能會把所有的依賴都歸咎於STS,但是你的迴應讓我朝着正確的方向正確解決這個問題。謝謝。 – Eldelshell 2011-03-03 09:34:49