You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot(JSP)部署AppEngine遇403/404错误及目录警告求助

解决Spring Boot + JSP + App Engine 启动时的403/404及目录警告问题

我来帮你拆解并解决这些问题——核心矛盾是工作目录与Web应用根目录不一致导致的资源访问失败,再加上Spring Boot和App Engine Jetty容器的适配问题,咱们一步步来:

1. 先搞定GCLOUD的目录不一致警告

这个警告是关键信号:App Engine不管是本地调试还是生产环境,只会认target/ysuria-0.0.1-SNAPSHOT下的打包后文件,根本不会访问你本地的工作目录E:\Eclipse Projects\ysuria。如果你的JSP、静态资源没正确打包到target目录,自然会出现404;要是权限配置不对,就会触发403。

解决步骤:

  • 先确认你的Maven项目是WAR打包类型,在pom.xml里设置:
    <packaging>war</packaging>
    
    因为App Engine依赖WAR包的目录结构来识别Web资源,Spring Boot默认的Jar打包不适合这里。
  • 配置maven-war-plugin,确保src/main/webapp下的JSP、静态资源能被正确复制到target的WAR包中:
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-war-plugin</artifactId>
        <version>3.3.2</version>
        <configuration>
            <warSourceDirectory>src/main/webapp</warSourceDirectory>
            <failOnMissingWebXml>false</failOnMissingWebXml> <!-- Spring Boot不需要传统web.xml -->
        </configuration>
    </plugin>
    
  • 先执行mvn clean package完成打包,检查target/ysuria-0.0.1-SNAPSHOT/WEB-INF下是否有jsp目录和对应的文件,再运行mvn appengine:run。

2. 修复Spring Boot JSP的路径配置

Spring Boot的JSP视图解析需要适配Jetty容器,在application.properties(或application.yml)里添加以下配置:

# JSP视图解析规则
spring.mvc.view.prefix=/WEB-INF/jsp/
spring.mvc.view.suffix=.jsp
# 临时禁用Spring Security(如果没配置权限规则,它会默认拦截所有请求导致403)
spring.security.enabled=false

同时,你的JSP文件必须放在src/main/webapp/WEB-INF/jsp/目录下,这样打包后会出现在target/ysuria-0.0.1-SNAPSHOT/WEB-INF/jsp/,Jetty才能正确找到这些文件。

3. 检查App Engine的路由配置(可选但推荐)

如果你的项目里有src/main/appengine/app.yaml,确保路由规则正确,避免资源被错误拦截:

runtime: java11 # 替换成你使用的Java版本
instance_class: F1

handlers:
  # 处理静态资源(比如css、js)
  - url: /static
    static_dir: static
  # 把所有动态请求交给Spring Boot的DispatcherServlet处理
  - url: /.*
    script: auto

如果没有这个文件,App Engine会用默认配置,但手动配置能避免很多莫名其妙的路由问题。

4. 验证启动流程

按这个顺序操作,确保每一步都没问题:

  1. 执行mvn clean清理旧的target文件
  2. 执行mvn package完成打包,确认target目录下的WAR结构完整
  3. (可选)切换到target/ysuria-0.0.1-SNAPSHOT目录,执行mvn -f ../pom.xml appengine:run——彻底消除目录不一致的警告

至于Jetty的日志,jetty-9.3.18.v20170406是正常的启动信息,那个截断的WARN大概率是因为上下文初始化时找不到资源,解决上面的问题后应该会自动消失。

内容的提问来源于stack exchange,提问作者Trần NguyễnThanh NhưÝ

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 11:53:18