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

Eclipse中Google App Engine本地服务器启动失败(升级gcloud SDK后)

App Engine标准应用升级gcloud SDK后启动失败:NoClassDefFoundError: com/google/apphosting/runtime/SessionStore

我的App Engine标准应用截至今日上午运行正常,升级gcloud SDK至45.0.0版本后突然无法启动,抛出如下错误:

INFO: Overwriting system property key 'java.util.logging.config.file', value '/Users/sharon/Library/Application Support/google-cloud-tools-java/managed-cloud-sdk/LATEST/google-cloud-sdk/platform/google_appengine/google/appengine/tools/java/config/sdk/logging.properties' with value 'WEB-INF/logging.properties' from '/Users/sharon/eclipse-workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp2/Lily/WEB-INF/appengine-web.xml'
2023-10-12 17:45:17.863:INFO::main: Logging initialized @768ms to org.eclipse.jetty.util.log.StdErrLog
2023-10-12 17:45:17.936:WARN:oejs.AbstractConnector:main: Ignoring deprecated socket close linger time
Exception in thread "main" java.lang.NoClassDefFoundError: com/google/apphosting/runtime/SessionStore
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:756)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:468)
    at java.net.URLClassLoader.access$100(URLClassLoader.java:74)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:369)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:363)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:362)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
    at com.google.appengine.tools.development.DevAppServerClassLoader.loadClass(DevAppServerClassLoader.java:117)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
    at com.google.apphosting.runtime.jetty9.SessionManagerHandler.create(SessionManagerHandler.java:75)
    at com.google.appengine.tools.development.jetty9.JettyContainerService.startContainer(JettyContainerService.java:360)
    at com.google.appengine.tools.development.AbstractContainerService.startup(AbstractContainerService.java:293)
    at com.google.appengine.tools.development.AutomaticInstanceHolder.startUp(AutomaticInstanceHolder.java:42)
    at com.google.appengine.tools.development.AbstractModule.startup(AbstractModule.java:102)
    at com.google.appengine.tools.development.Modules.startup(Modules.java:118)
    at com.google.appengine.tools.development.DevAppServerImpl.doStart(DevAppServerImpl.java:280)
    at com.google.appengine.tools.development.DevAppServerImpl.access$000(DevAppServerImpl.java:57)
    at com.google.appengine.tools.development.DevAppServerImpl$1.run(DevAppServerImpl.java:229)
    at com.google.appengine.tools.development.DevAppServerImpl$1.run(DevAppServerImpl.java:227)
    at java.security.AccessController.doPrivileged(Native Method)
    at com.google.appengine.tools.development.DevAppServerImpl.start(DevAppServerImpl.java:227)
    at com.google.appengine.tools.development.DevAppServerMain$StartAction.apply(DevAppServerMain.java:381)
    at com.google.appengine.tools.util.Parser$ParseResult.applyArgs(Parser.java:58)
    at com.google.appengine.tools.development.DevAppServerMain.run(DevAppServerMain.java:239)
    at com.google.appengine.tools.development.DevAppServerMain.main(DevAppServerMain.java:230)
Caused by: java.lang.ClassNotFoundException: com.google.apphosting.runtime.SessionStore
    at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
    at com.google.appengine.tools.development.DevAppServerClassLoader.loadClass(DevAppServerClassLoader.java:117)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
    ... 28 more

但新建的另一个App Engine标准应用可正常运行,请问该错误的可能原因是什么?


可能的原因及解决思路

  • 依赖版本不兼容:gcloud SDK 45.0.0对App Engine Java运行时的依赖库做了调整,现有项目中旧的SDK依赖(如appengine-api-1.0-sdk)和新版SDK不匹配,导致找不到SessionStore类。
  • 本地缓存/构建文件过期:升级SDK后,Eclipse服务器临时目录、Maven/Gradle依赖缓存残留旧版本文件,和新版SDK冲突。
  • 应用配置差异:现有项目的appengine-web.xml存在自定义设置(如日志配置覆盖),这些配置在新版SDK下引发类加载问题,而新项目使用默认配置不受影响。

具体解决步骤

  1. 同步依赖版本
    查看gcloud version输出的App Engine组件版本,将项目中appengine-api-1.0-sdk、appengine-tools-sdk等依赖的版本调整为对应版本。
  2. 清理本地缓存
    • 删除Eclipse服务器临时目录(日志中/Users/sharon/eclipse-workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp2/),重启服务器。
    • 执行mvn clean install或gradle clean build清除旧构建产物和依赖缓存。
  3. 检查配置文件
    对比新项目的appengine-web.xml,注释现有项目中非必要的自定义配置(如日志配置覆盖),重启应用验证。
  4. 降级SDK验证
    若上述方法无效,可执行gcloud components update --version=44.0.0降级SDK,确认是否为新版本兼容性问题。

内容的提问来源于stack exchange,提问作者helloi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 18:44:50