Google App Engine 本地服务器无法在 Eclipse 上运行

hel*_*loi 3 java eclipse google-app-engine localhost

我的应用程序引擎标准应用程序一直运行到今天早上,突然它无法运行并抛出以下错误。

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
Run Code Online (Sandbox Code Playgroud)

我不明白这个错误是什么意思。可能是什么原因?我注意到这是在我将 gcloud sdk 版本升级到 45.0.0 后发生的,但我创建了另一个应用程序引擎标准应用程序,它工作正常。

小智 6

这似乎是 2023 年 10 月 10 日发布的云 sdk 450.0.0 中的错误或回归 https://cloud.google.com/sdk/docs/release-notes

具体来说:

App Engine 将 Java SDK 更新至开源项目的版本 2.0.20 版本

我们能够通过在 build.gradle 文件中固定 cloudSdk 版本来让本地开发服务器正常工作:

appengine {
    // Configure the Cloud SDK version
    tools {
        cloudSdkVersion = '449.0.0'
    }
...etc
Run Code Online (Sandbox Code Playgroud)