如何在 Tomcat 7 上部署 Grails 3 应用程序?

How can I deploy a Grails 3 app on Tomcat 7?

我有一个 Grails 应用程序,我想将其部署到 tomcat 实例。使用的相关库版本:

Grails Version: 3.2.0
Groovy Version: 2.4.7
JVM Version: 1.7.0_79
Tomcat Version: 7.0.39

我建了一个WAR文件(使用grails war),上传到服务器,放到webapp目录下,重启tomcat。 WAR 文件像往常一样被解压,但是当试图访问 webapp 的索引页面时,它只是 returns 错误 404。如果我手动将一个名为 ìndex.html` 的文件放在 webapp 的目录中,然后提供此文件。因此,我得出结论,tomcat 根本没有启动该应用程序。

我试图检查日志是否有错误,但 catalina.out 几乎是空的。重新部署我的 webapp 会产生以下日志输出:

INFO: Reloading Context with name [/myapp] has started
Oct 18, 2016 1:56:30 PM org.apache.catalina.loader.WebappClassLoader validateJarFile
INFO: validateJarFile(/<tomcat-path>/webapps/myapp/WEB-INF/lib/javax.el-api-2.2.4.jar) - jar not loaded. See Servlet Spec 2.3, section 9.7.2. Offending class: javax/el/Expression.class
Oct 18, 2016 1:57:43 PM org.apache.catalina.core.ApplicationContext log
INFO: 1 Spring WebApplicationInitializers detected on classpath
Oct 18, 2016 1:57:43 PM org.apache.catalina.core.StandardContext reload
INFO: Reloading Context with name [/myapp] is completed

我在那里看不到任何严重错误。我怀疑的一件事是我的项目没有 web.xml 文件,但我读到这在 Grails 3 和 servlet 容器 > 3.0 版中不需要 web.xml不再支持(tomcat 7 支持 servlet 3.0 版)。我尝试过的事情:

所有尝试都没有任何效果。我非常感谢任何提示、进一步的调试技巧或我可能忽略的事情。

提前致谢!

这是一个 Grails 错误,将在今天发布的 3.2.1 中修复。 3.2.0的解决办法见如下命令:

https://github.com/grails/grails-core/issues/10196#issuecomment-251155196