Jetty下带有Spring 3.0.0依赖性问题的Grails 1.2.1

时间:2010-03-10 19:08:37

标签: spring grails jetty

刚搬到Grails 1.2.1(之前使用过1.1.1)。更改了application.properties,运行grails升级,修复了BuildConfig和Bootstrap - 从grails控制台一切正常。

但是,在jetty 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构建的。我研究了战争依赖关系,看到弹簧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

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:2)

问题是由Spring的新版本引起的 ConfigurableWebApplicationContext位于spring-web.jar中,但它继承ConfigurableApplicationContext的接口,其中包含setId(String)方法,位于spring-context.jar中。

如果你有一个针对旧版spring-context编译的库,那么它将失败并带有NoMethodFound异常。

解决方案是根据最新的Spring版本找到并重新编译该库。

如果您使用的是低于3.0的Spring版本,您可以尝试将完整的Spring bundle Jar放入而不是单独的包。