升级的Grails项目从2.2.1升级到2.3.6; run-app使用Tomcat失败,不能使用Jetty进行调试

时间:2014-03-13 23:31:02

标签: eclipse tomcat grails

在Grails 2.2.1下运行并且我刚刚升级到2.3.6(使用GGTS 3.4作为我们的IDE)的项目在运行应用程序时遇到了一个非常奇怪的问题。

如果我使用tomcat插件,它使用tomcat进行dev运行,那么grails run-app命令似乎启动了tomcat,但无法启动应用程序。发送到localhost:8080的任何请求都返回404。

如果我使用Jetty插件,它使用jetty进行开发运行,grails run-app命令正常启动,但从不连接到IDE中的调试端口(是的,我打开了--debug-fork)。

一个快速的示例grails应用程序,在2.3.6中全新制作,正常运行并且符合预期,因此它似乎与版本迁移有关,或者可能是一段旧配置。

有没有人见过这样的问题,你能否提供一些建议,说明在迁移过程中我可能没有适当修正的问题?感谢。

2 个答案:

答案 0 :(得分:0)

如果要从以前版本的Grails 2.3.x升级并使用Hibernate和/或Tomcat插件,则需要更新BuildConfig中的版本:

build ':tomcat:7.0.50.1'
runtime ':hibernate:3.6.10.8'

检查文件:http://grails.org/2.3.6+Release+Notes

答案 1 :(得分:0)

我找到了答案。在这里分享它是为了其他可能遇到同样问题的人的利益:

当我成功禁用分叉执行时,我看到Tomcat抛出了一个ClassNotFound异常:

Caused by: java.lang.ClassNotFoundException: org.apache.catalina.deploy.FilterDef

正在搜索该错误消息,发现此链接:Upgrade to tomcat:7.0.47 fails with web.xml issue

简短版本:如果项目中有一个名为“web-app / META-INF / context.xml”的文件,其中包含以下内容,则应将其删除:

<?xml version="1.0" encoding="UTF-8"?>
<Context>
    <Loader delegate="true"/>
</Context>

这样做,事情应该恢复正常。