Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 404 AWS视图出现错误,但使用Spring Boot进行本地部署时未出现错误_Java_Spring_Amazon Web Services_Spring Mvc_Spring Boot - Fatal编程技术网

Java 404 AWS视图出现错误,但使用Spring Boot进行本地部署时未出现错误

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

为了练习,我将Spring引导应用程序部署到AWS Elastic Beanstalk环境中。我已经能够在本地运行该应用程序。由于Spring Boot附带了内置的Tomcat,所以我使用了JavaAWS环境(而不是Tomcat环境)。在日志中,应用程序似乎正在正确启动。但是,由于某些原因,当我导航到根页面(映射到index.html)时,我会出现以下错误:

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等价物):

  • 将“apply plugin:'war'”添加到build.gradle文件中。这将导致“gradle clean build”现在构建一个war文件而不是jar文件
  • 部署war文件 您可能需要执行一些进一步的调整以纠正问题。但在一天结束时,您应该能够查看“war”文件,并查看WEB-INF文件夹的内容。一旦您管理好了它,并且可以在本地运行可执行文件(如java-jarapp.war),那么您应该能够将其成功部署到AWS。还值得注意的是,在尝试运行war之前,您希望先将cd刻录到war所在的文件夹中。否则,您的跑步将通过上下文从本地系统获取WEB-INF内容

     public ViewResolver getViewResolver() {
        InternalResourceViewResolver resolver = new InternalResourceViewResolver();
        resolver.setPrefix("WEB-INF/view/");
        resolver.setSuffix(".html");
        return resolver;
    }