【问题标题】:Grails 1.2.1 with Spring 3.0.0 dependency problem under JettyGrails 1.2.1 与 Jetty 下 Spring 3.0.0 的依赖问题
【发布时间】:2010-03-10 19:08:36
【问题描述】:

刚刚移至 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 构建的。我研究了战争依赖关系,发现那里使用了 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

任何帮助将不胜感激。

【问题讨论】:

    标签: spring grails jetty


    【解决方案1】:

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

    如果您有一个针对旧版本 spring-context 编译的库,它将失败并出现 NoMethodFound 异常。

    解决方案是针对最新的 Spring 版本定位并重新编译该库。

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

    【讨论】:

      猜你喜欢
      • 2011-03-08
      • 1970-01-01
      • 2011-01-18
      • 1970-01-01
      • 1970-01-01
      • 2011-01-23
      • 2011-11-11
      • 2016-10-16
      • 2019-01-25
      相关资源
      最近更新 更多