2014-01-13 58 views
1

我试图通过运行'grails dev war'命令并手动将战争部署到Tomcat容器中来在测试环境中部署grails应用程序。该应用程序不能运行,我看到像这样的几个错误日志:在tomcat中部署grails战争时发生类加载器错误

./logs/catalina.out:2014-01-13 09:18:53415 [主]错误context.GrailsContextLoader - 错误初始化应用程序: 创建名为'instanceTagLibraryApi'的bean时出错:自动装配依赖关系失败;注入 ;嵌套的异常是 org.springframework.beans.factory.BeanCreationException:不能 自动装配方法:public void org.codehaus.groovy.grails.plugins.web.api.TagLibraryApi.setGspTagLibraryLookup(org.codehaus.groovy.grails.web .pages.TagLibraryLookup); 嵌套的异常是 org.springframework.beans.factory.BeanCreationException:错误 创建名为'gspTagLibraryLookup'的bean:调用init 方法失败;嵌套的异常是 org.springframework.beans.factory.BeanCreationException:错误 创建名为'es.indra.nta.UiLayoutsTagLib'的bean:bean的初始化 失败;嵌套的异常是 org.springframework.beans.ConversionNotSupportedException:无法 “org.apache.catalina.loader.WebappClassLoader”类型的 转换属性值到所需的类型 “groovy.lang.GroovyClassLoader”的属性“类加载器”;嵌套0​​例外是java.lang.IllegalStateException:不能 类型[org.apache.catalina.loader.WebappClassLoader]的值转换为所需的类型 [groovy.lang.GroovyClassLoader用于属性“类装载器”:没有 匹配编辑或转换找到策略

我得到几个bean的错误。我正在使用Grails 2.2.2,并尝试在Tomcat 5.5和7.0中进行部署,结果相同。如果我使用'grails run-app'而不是该应用程序运行平稳,因此我怀疑与Tomcat有关的某些配置丢失,但不知道在什么位置以及在哪里进行配置。

关于我缺少什么的任何想法?

感谢您的帮助!

David。

回答

0

我解决了这个问题,并且我错误地认为我是一个Tomcat配置问题。我解释一下,以防万一任何人面临类似的问题:

在错误日志中,我留在问题中,它指的是我们开发的内部插件的taglib es.indra.nta.UiLayoutsTagLib。检查标签库的代码,我意识到,我使用的代码从这个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

我遇到类似的问题,当我升级到2.2.x的Grails的(来自1.3.7)

application.properties,我不得不

plugins.tomcat=2.2.x 

,我不得不将其删除,并添加在grails-app/conf/BuildConfig.groovy

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

它解决了我的问题,我希望它也解决了你的问题。

+0

感谢您的回答@Isammoc。不幸的是,配置已经是这样了。我在我的BuildConfig.groovy中使用'plugins {build:tomcat:$ grailsVersion“}',并且在我的application.properties中没有'plugins.tomcat'引用。 – davidfm