2010-03-10 35 views
1

剛轉移到Grails 1.2.1(以前使用1.1.1)。更改了application.properties,運行grails升級,修復了BuildConfig和Bootstrap - 從grails控制檯一切正常。Grails 1.2.1與Jetty下的Spring 3.0.0依賴關係問題

然而,當越來越部署在碼頭6.1.22打包戰爭的一個問題:

1581 [main] ERROR org.springframework.web.context.ContextLoader - Context initialization failed org.springframework.beans.factory.access.BootstrapException: Error executing bootstraps; nested exception is java.lang.NoSuchMethodError: org.codehaus.groovy.grails.commons.spring.ReloadAwareAutowireCapableBeanFactory.setParameterNameDiscoverer(Lorg/springframework/core/ParameterNameDiscoverer;)V 

我的項目是建立與maven2的。我研究了戰爭依賴關係,看到spring 2.5.6和3.0.0.RELEASE都在那裏使用。 然後我試圖壓制使用Spring 2.5.6和有問題使用Acegi插件(使用0.5.1):

2010-03-10 21:06:56.440:WARN::Nested in org.springframework.beans.factory.access.BootstrapException: Error executing bootstraps; nested exception is java.lang.NoSuchMethodError: org.springframework.web.context.ConfigurableWebApplicationContext.setId(Ljava/lang/String;)V 

任何幫助將不勝感激。

回答

2

該問題是由Spring flexible的新版本 中的事實引起的,ConfigurableWebApplicationContext位於spring-web.jar中,但它繼承的接口ConfigurableApplicationContext包含setId(String)方法,它位於spring-context中。罐。

如果您有一個針對spring-context的舊版本進行編譯的庫,它將失敗並顯示NoMethodFound異常。

解決方案是找到並重新編譯該庫與最新的Spring版本。

如果您使用的是3.0以下的Spring版本,您可以嘗試使用完整的Spring捆綁包而不是單獨的包。

+0

謝謝德米特里。我已經找到並解決了這個問題;) – Archer 2010-06-10 10:39:24