在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中全新制作,正常运行并且符合预期,因此它似乎与版本迁移有关,或者可能是一段旧配置。
有没有人见过这样的问题,你能否提供一些建议,说明在迁移过程中我可能没有适当修正的问题?感谢。
答案 0 :(得分:0)
如果要从以前版本的Grails 2.3.x升级并使用Hibernate和/或Tomcat插件,则需要更新BuildConfig中的版本:
build ':tomcat:7.0.50.1'
runtime ':hibernate:3.6.10.8'
答案 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>
这样做,事情应该恢复正常。