Java 404 AWS视图出现错误,但使用Spring Boot进行本地部署时未出现错误
为了练习,我将Spring引导应用程序部署到AWS Elastic Beanstalk环境中。我已经能够在本地运行该应用程序。由于Spring Boot附带了内置的Tomcat,所以我使用了JavaAWS环境(而不是Tomcat环境)。在日志中,应用程序似乎正在正确启动。但是,由于某些原因,当我导航到根页面(映射到index.html)时,我会出现以下错误:Java 404 AWS视图出现错误,但使用Spring Boot进行本地部署时未出现错误,java,spring,amazon-web-services,spring-mvc,spring-boot,Java,Spring,Amazon Web Services,Spring Mvc,Spring Boot,为了练习,我将Spring引导应用程序部署到AWS Elastic Beanstalk环境中。我已经能够在本地运行该应用程序。由于Spring Boot附带了内置的Tomcat,所以我使用了JavaAWS环境(而不是Tomcat环境)。在日志中,应用程序似乎正在正确启动。但是,由于某些原因,当我导航到根页面(映射到index.html)时,我会出现以下错误: This application has no explicit mapping for /error, so you are seein
This application has no explicit mapping for /error, so you are seeing this as a fallback.
对于任何映射,都会发生这种情况。同样,我的本地服务器上没有这个问题。我的视图解析器如下
public ViewResolver getViewResolver() {
InternalResourceViewResolver resolver = new InternalResourceViewResolver();
resolver.setPrefix("WEB-INF/view/");
resolver.setSuffix(".html");
return resolver;
}
在我看来,好像解析器正在选择正确的路径;一旦我将其部署到EC,路径是否会发生变化?在你的回答中,请把我当作初学者 我设法找到了另一种部署方法:将应用程序容器化,然后将其部署到AWS docker环境中。如果您在尝试部署Spring引导应用程序时遇到这个404问题,那么解决它可能需要比您所关心的更多的努力。我以前从未停靠过应用程序,但这样做最终相当简单 TL;DR:不要尝试将Spring Boot应用程序部署到Tomcat或Java AWS环境中。将其集装箱化并使用Docker AWS环境
编辑:几个月后,我带着一些新知识回顾了这篇文章:值得注意的是,这只是因为我的docker build命令包含了容器中的WEB-INF内容(因为它包含了传递上下文中的所有内容).出现404错误的原因是,部署到Elastic Beanstalk的jar文件不包含WEB-INF文件夹。要解决问题,您可以执行以下操作(我假设您使用的是gradle;如果需要,您可以搜索maven等价物):
public ViewResolver getViewResolver() {
InternalResourceViewResolver resolver = new InternalResourceViewResolver();
resolver.setPrefix("WEB-INF/view/");
resolver.setSuffix(".html");
return resolver;
}