Grails 1.2.1 с проблемой зависимости Spring 3.0.0 под Jetty - PullRequest
1 голос
/ 10 марта 2010

Только что перешел на Grails 1.2.1 (раньше использовался 1.1.1). Изменили application.properties, запустили обновление grails, исправили BuildConfig и Bootstrap - все отлично работает с консоли grails.

Однако, возникает проблема при развертывании упакованной войны на пристани 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 Ответ

2 голосов
/ 10 июня 2010

Проблема вызвана тем, что в новой версии Spring ConfigurableWebApplicationContext находится в spring-web.jar, но интерфейс, который он наследует, ConfigurableApplicationContext, который содержит метод setId (String), находится в spring-context.jar.

Если у вас есть библиотека, которая была скомпилирована для более старой версии Spring-context, она завершится с исключением NoMethodFound.

Решение состоит в том, чтобы найти и перекомпилировать эту библиотеку для последней версии Spring.

Если вы используете версию Spring ниже 3.0, вы можете попробовать поставить полный Jar-пакет Spring вместо отдельных пакетов.

...