Tomcat部署Gradle构建Spring Boot应用出现404资源不可用问题
外部Tomcat 8.5.73部署Spring Boot应用遇404错误
我在外部Tomcat 8.5.73上部署Spring Boot应用时,访问localhost:8080/myApplicationName出现「请求的资源不可用」错误,但Angular前端应用localhost:8080/myAngularApp可正常访问。
已完成以下操作:
- 正确配置JRE_HOME(jre1.8.0_51)和CATALINA_HOME环境变量
- 在Gradle中设置WAR打包方式
- 将
spring-boot-starter-tomcat设为provided依赖 - 应用继承
SpringBootServletInitializer并重写SpringApplicationBuilder configure方法 - 执行
gradle war命令构建应用 - 将生成的.war文件放入Tomcat的/webapps目录
启动Tomcat的startup.bat时,日志如下:
WARNING [localhost-startStop-1] org.apache.tomcat.util.descriptor.web.WebXml.setVersion Unknown version string [5.0]. Default version will be used. INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployWAR Deployment of web application archive [ .. \tomcat\webapps\myApplicationName.war] has finished in [4,823] ms INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["http-nio-8080"] INFO [main] org.apache.catalina.startup.Catalina.start Server startup in 10657 ms
额外尝试过的操作:
- 在tomcat8w的启动和关闭属性中设置
java替代jvm,问题未解决 - Tomcat管理面板能看到所有已部署应用,但除前端外均返回404
- 把.war文件发给同事后可正常运行,因此99%确定问题出在我的Tomcat配置上。和同事的唯一区别是,他启动Tomcat时日志会显示Spring标识及相关日志。
内容的提问来源于stack exchange,提问作者Salvatore Maruccio
相关产品推荐
相关产品推荐

