我有一个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的索引页面时,它只返回错误404.如果我在webapp的目录中手动放置一个名为“ìndex.html”的文件,则会提供此文件。因此,我得出结论,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容器&gt;中进行的。版本3.0不再需要web.xml(tomcat 7支持servlet 3.0版)。我尝试过的事情:
java -Dgrails.env=prod -jar myapp.war
)。这完全可以工作,我可以在端口8080上本地访问它(我无法从远程尝试它,因为只有我实际想要部署到的tomcat实例才允许通过防火墙)。 org.springframework.boot:spring-boot-starter-tomcat
的范围设置为provided
build.gradle
中的tomcat版本设置为ext['tomcat.version'] = '7.0.72'
(根据官方文档的建议。我不能使用与服务器上的tomcat完全相同的版本(7.0.39),因为有些库在maven central上不适用于此版本。所有尝试都没有任何效果。我非常感谢任何提示,进一步的调试技巧或我可能忽略的事情。
提前致谢!
答案 0 :(得分:1)
这是一个Grails错误,将在3.2.1中修复,将于今天发布。有关3.2.0的解决方案,请参阅以下命令:
https://github.com/grails/grails-core/issues/10196#issuecomment-251155196