刚搬到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
非常感谢任何帮助。
答案 0 :(得分:2)
问题是由Spring的新版本引起的 ConfigurableWebApplicationContext位于spring-web.jar中,但它继承ConfigurableApplicationContext的接口,其中包含setId(String)方法,位于spring-context.jar中。
如果你有一个针对旧版spring-context编译的库,那么它将失败并带有NoMethodFound异常。
解决方案是根据最新的Spring版本找到并重新编译该库。
如果您使用的是低于3.0的Spring版本,您可以尝试将完整的Spring bundle Jar放入而不是单独的包。