2014-01-13 3 views
1

Я пытаюсь развернуть приложение grails в тестовой среде, выполнив команду «grails dev war» и вручную развернув войну в контейнер Tomcat. Приложение не работает, и я вижу несколько журналов ошибок, как это:Ошибка загрузчика класса при развертывании войны grails в tomcat

./logs/catalina.out:2014-01-13 09: 18: 53415 [главная] ОШИБКА context.GrailsContextLoader - Ошибка инициализации application: Ошибка создания bean-компонента с именем 'instanceTagLibraryApi': инжекция неавторизованных зависимостей; вложенное исключение org.springframework.beans.factory.BeanCreationException: Не удалось метод autowire: общественная пустота org.codehaus.groovy.grails.plugins.web.api.TagLibraryApi.setGspTagLibraryLookup (org.codehaus.groovy.grails.web .pages.TagLibraryLookup); Вложенное исключение - org.springframework.beans.factory.BeanCreationException: Ошибка создание bean-компонента с именем 'gspTagLibraryLookup': вызов init метод не выполнен; вложенное исключение: org.springframework.beans.factory.BeanCreationException: Ошибка создание bean-компонента с именем 'es.indra.nta.UiLayoutsTagLib': инициализация из bean-компонента; вложенное исключение org.springframework.beans.ConversionNotSupportedException: Не удалось новообращенного значение свойства типа «org.apache.catalina.loader.WebappClassLoader» до требуемого типа «groovy.lang.GroovyClassLoader» свойство «ClassLoader»; вложенная исключение java.lang.IllegalStateException: Невозможно преобразовать значение типа [org.apache.catalina.loader.WebappClassLoader] для требуемого типа [groovy.lang.GroovyClassLoader] для свойства «ClassLoader»: нет не соответствующие редакторы или преобразования найденная стратегия

У меня такая же ошибка для нескольких бобов. Я использую Grails 2.2.2 и пробовал развертывание в Tomcat 5.5 и 7.0 с тем же результатом. Если я использую 'grails run-app', приложение будет работать гладко, поэтому я подозреваю, что какая-то конфигурация, связанная с Tomcat, отсутствует, но не знает, что и где настраивать.

Любые идеи о том, что мне не хватает ?.

Спасибо за помощь!

David.

ответ

0

Я решил проблему, и я ошибся в своем предположении о том, что проблема конфигурации Tomcat. Я объясню это, если кто-то столкнется с аналогичной проблемой:

В журналах ошибок я оставил в вопросе, что он ссылался на taglib встроенного плагина, разработанного нами es.indra.nta.UiLayoutsTagLib.Проверка коды на TagLib, я понял, что я использовал код из этого SO сообщения: Configuration of Grails plugin, таким образом, имея это в коде моего TagLib в:

GroovyClassLoader classLoader = new GroovyClassLoader(getClass().getClassLoader()) 
config = new ConfigSlurper().parse(classLoader.loadClass('MyWebServicePluginConfig')) 

При развертывании WAR, Tomcat использует его класс по умолчанию загрузчика и не найдя GroovyClassLoader, запрошенный моим taglib.

Извлечение использования ConfigSlurper и использование атрибутов тегов для свойств конфигурации, которые я использовал (что дополнительно имеет смысл), устранили необходимость использования загрузчика классов в коде taglib и решили проблему.

0

я столкнулся с подобным вопросом, когда я повышен до Grails 2.2.x (от 1.3.7)

В application.properties, я имел

plugins.tomcat=2.2.x 

, и я должен был удалить его и добавить в grails-app/conf/BuildConfig.groovy :

plugins { 
    build ':tomcat:2.2.x' 
} 

Это решило мою проблему, я надеюсь, что оно также решит вашу проблему.

+0

Спасибо за ответ @Isammoc. К сожалению, конфигурация уже такая. У меня есть «plugins {build»: tomcat: $ grailsVersion "}' в моем BuildConfig.groovy и нет ссылки на plugins.tomcat в моих приложениях.properties. – davidfm

Смежные вопросы