我正在尝试在测试环境中部署grails应用程序,方法是运行'grails dev war'命令并手动将war部署到Tomcat容器中。该应用程序无法运行,我看到几个错误日志,如下所示:
./ logs / catalina.out:2014-01-13 09:18:53,415 [main] ERROR context.GrailsContextLoader - 初始化应用程序时出错: 创建名为'instanceTagLibraryApi'的bean时出错:注入 自动连接依赖失败;嵌套异常是 org.springframework.beans.factory.BeanCreationException:不能 autowire方法: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:初始化 豆失败;嵌套异常是 org.springframework.beans.ConversionNotSupportedException:失败 转换类型的属性值 'org.apache.catalina.loader.WebappClassLoader'到必需的类型 属性'classLoader'的'groovy.lang.GroovyClassLoader';嵌套 异常是java.lang.IllegalStateException:无法转换值 键入[org.apache.catalina.loader.WebappClassLoader]到必需的类型 [groovy.lang.GroovyClassLoader]属性'classLoader':没有 找到匹配的编辑器或转换策略
我为几个bean得到了同样的错误。我正在使用Grails 2.2.2
并尝试使用相同的结果在Tomcat 5.5和7.0中进行部署。如果我使用'grails run-app'
代替应用程序顺利运行,因此我怀疑某些与Tomcat相关的配置丢失但不知道配置的内容和位置。
关于我缺少什么的任何想法?。
感谢您的帮助!
大卫。
答案 0 :(得分: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'
}
它解决了我的问题,我希望它也能解决你的问题。
答案 1 :(得分:0)
我解决了这个问题,我错误地认为我是Tomcat配置问题。我解释一下,如果有人遇到类似的问题:
在我在问题中留下的错误日志中,它引用了我们es.indra.nta.UiLayoutsTagLib
开发的内部插件的taglib。检查taglib的代码我意识到我正在使用这个SO帖子中的代码:Configuration of Grails plugin,因此在我的taglib代码中有这个代码:
GroovyClassLoader classLoader = new GroovyClassLoader(getClass().getClassLoader())
config = new ConfigSlurper().parse(classLoader.loadClass('MyWebServicePluginConfig'))
部署WAR时,Tomcat使用其默认的类加载器,而不是找到我的taglib请求的GroovyClassLoader
。
删除ConfigSlurper
的使用并使用我正在使用的配置属性的标记属性(这更有意义)消除了在taglib的代码中使用类加载器的需要并解决了问题。