在 App Engine Standard 上部署时无法生成 quickstart.xml

Posted

技术标签:

【中文标题】在 App Engine Standard 上部署时无法生成 quickstart.xml【英文标题】:Failed to generate quickstart.xml while deploying on App Engine Standard 【发布时间】:2018-07-11 22:37:11 【问题描述】:

自过去 3 天以来,我一直在努力解决这个问题,并且可能在 SO 和 Git 论坛上尝试了所有解决方案。

在谷歌应用引擎中, 该应用程序在本地服务器上完美运行,但在部署时, 显示以下错误。

正在读取应用程序配置数据... ************************************ 配置警告:/XML 元素和--application/--version 暂存时不应指定

以下参数将从 app.yaml 应用程序中清除: shsDemo 版本:1.1

如果应用程序或版本是 指定。


开始与模块默认交互... 0% 正在扫描 jsp 文件。 0% 编译 jsp 文件。 2018 年 2 月 1 日晚上 8:10:47 org.apache.jasper.servlet.TldScanner scanJars INFO: 至少一个 JAR 已扫描 TLD,但未包含 TLD。启用调试日志记录 此记录器获取已扫描但没有 TLD 的 JAR 的完整列表 在他们身上被发现。在扫描期间跳过不需要的 JAR 可以改善 启动时间和 JSP 编译时间。 2018 年 2 月 1 日晚上 8:10:48 org.apache.jasper.JspC processFile INFO:构建文件:/feedback.jsp

错误:无法找到或加载主类 com.google.appengine.tools.development.jetty9.QuickStartGenerator 执行时出错:/usr/lib/jvm/java-8-oracle/jre/bin/java -cp /usr/lib/google-cloud-sdk/platform/google_appengine/google/appengine/tools/java/jetty93/jetty-distribution/lib/jetty-schemas-3.1.jar:/usr/lib/google-cloud-sdk/平台/google_appengine/google/appengine/tools/java/jetty93/jetty-distribution/lib/jetty-util-9.3.18.v20170406.jar:/usr/lib/google-cloud-sdk/platform/google_appengine/google/appengine /tools/java/jetty93/jetty-distribution/lib/jetty-deploy-9.3.18.v20170406.jar:/usr/lib/google-cloud-sdk/platform/google_appengine/google/appengine/tools/java/jetty93/ jetty-distribution/lib/jetty-http-9.3.18.v20170406.jar:/usr/lib/google-cloud-sdk/platform/google_appengine/google/appengine/tools/java/jetty93/jetty-distribution/lib/jetty -proxy-9.3.18.v20170406.jar:/usr/lib/google-cloud- . . .类似这样的日志。 . . .无法暂存应用程序:未能 生成 quickstart-web.xml。请查看日志 [/tmp/appcfg5433316199131614644.log] 了解更多信息。

在日志中,

无法暂存: java.lang.RuntimeException:无法生成 quickstart-web.xml。 在 com.google.appengine.tools.admin.Application.createQuickstartWebXml(Application.java:1806) 在 com.google.appengine.tools.admin.Application.populateStagingDirectory(Application.java:999) 在 com.google.appengine.tools.admin.Application.createStagingDirectory(Application.java:872) 在 com.google.appengine.tools.admin.AppAdminImpl.stageApplication(AppAdminImpl.java:539) 在 com.google.appengine.tools.admin.AppAdminImpl.stageApplicationWithDefaultResourceLimits(AppAdminImpl.java:492) 在 com.google.appengine.tools.admin.AppCfg$StagingAction.execute(AppCfg.java:2529) 在 com.google.appengine.tools.admin.AppCfg.executeAction(AppCfg.java:390) 在 com.google.appengine.tools.admin.AppCfg.(AppCfg.java:213) 在 com.google.appengine.tools.admin.AppCfg.(AppCfg.java:119) 在 com.google.appengine.tools.admin.AppCfg.main(AppCfg.java:115) com.google.appengine.tools.admin.AdminException:无法暂存应用程序:无法生成 quickstart-web.xml。 在 com.google.appengine.tools.admin.AppAdminImpl.stageApplication(AppAdminImpl.java:543) 在 com.google.appengine.tools.admin.AppAdminImpl.stageApplicationWithDefaultResourceLimits(AppAdminImpl.java:492) 在 com.google.appengine.tools.admin.AppCfg$StagingAction.execute(AppCfg.java:2529) 在 com.google.appengine.tools.admin.AppCfg.executeAction(AppCfg.java:390) 在 com.google.appengine.tools.admin.AppCfg.(AppCfg.java:213) 在 com.google.appengine.tools.admin.AppCfg.(AppCfg.java:119) 在 com.google.appengine.tools.admin.AppCfg.main(AppCfg.java:115) 原因:java.lang.RuntimeException:无法生成 quickstart-web.xml。 在 com.google.appengine.tools.admin.Application.createQuickstartWebXml(Application.java:1806) 在 com.google.appengine.tools.admin.Application.populateStagingDirectory(Application.java:999) 在 com.google.appengine.tools.admin.Application.createStagingDirectory(Application.java:872) 在 com.google.appengine.tools.admin.AppAdminImpl.stageApplication(AppAdminImpl.java:539) ... 6 更多

JDK:oracle 8。 请帮我找出问题并在 App Engine 上部署项目。 我之前部署过同样的项目。

【问题讨论】:

您的具体部署命令是什么? 【参考方案1】:

您使用的是 GCloud SDK 版本 187.0.0 吗?

我在使用这个版本的 SDK 时遇到了同样的问题,甚至在从 https://cloud.google.com/appengine/docs/standard/java/quickstart 运行教程项目时也遇到了同样的错误

我卸载了 SDK 并安装了之前的版本 (186.0.0),现在一切正常。也许它也可以为您解决问题。

旧版本可在此处下载:

https://console.cloud.google.com/storage/browser/cloud-sdk-release?authuser=0&prefix=google-cloud-sdk-186

【讨论】:

感谢您的洞察力。但是我无法更新或安装 v 186.0.0。我得到的只是支持的模块列表。 值 '186.0.0' 对于 APT::Default-Release 无效,因为源中没有这样的版本 我在一月份找到了相同的解决方案。目前,gcloud 组件版本 188.0.1 也不起作用【参考方案2】:

我有同样的问题。对于使用 Google Cloud Shell 在 App Engine 上构建和部署的开发者,您可以通过以下方式更改 gcloud sdk 版本:

sudo gcloud components update --version 186.0.0

【讨论】:

【参考方案3】:

我能够通过删除旧版本恢复到版本 186.0.0-0。尝试使用 apt 安装旧版本。只有在 debian/ubuntu 上将 google cloud sdk 安装为 .deb 包时,它才会起作用。

apt-get install google-cloud-sdk=186.0.0-0 google-cloud-sdk-app-engine-java=186.0.0-0

恢复到旧版本后也可以进行部署。

我还在谷歌的云 sdk 问题跟踪器上打开了一个问题 https://issuetracker.google.com/issues/72808542

【讨论】:

是的,主要区别在于,写的是 186.0.0-0 而不是 186.0.0【参考方案4】:

临时解决办法。

今天,gcloud 工具的版本为 188.0.1,mvn 部署仍然无法正常工作。不过,我找到了解决方法。

下载 GAE sdk 后: https://cloud.google.com/appengine/docs/standard/java/download

我将丢失的 jar 复制到提到的位置:

cp -r  appengine-java-sdk-1.9.62/lib/tools/quickstart [TO YOUR SDK PATH]google-cloud-sdk/platform/google_appengine/google/appengine/tools/java/lib/tools/

随后,mvn appengine:stage 和 mvn appengine:deploy 按预期工作。

参考:basis for work around

【讨论】:

【参考方案5】:

我在 187 版遇到了同样的问题,我通过降级到 186 版解决了这个问题。

我运行了这 2 个命令:

apt-get install google-cloud-sdk=186.0.0-0 google-cloud-sdk-app-engine-java=186.0.0-0

gcloud components update --version 186.0.0

【讨论】:

以上是关于在 App Engine Standard 上部署时无法生成 quickstart.xml的主要内容,如果未能解决你的问题,请参考以下文章

在 GCP App Engine 上部署 Django、Django REST Framework 后端和 VueJS + webpack 前端(标准)

在Google App Engine Standard中配置嵌套的静态文件夹 - PHP环境

随机时间段内使用Java Google App Engine Standard的memcache中的服务错误

尝试使用 Ktor/Java8 读取在 App Engine Standard 上运行的数据时,Firestore 客户端挂起

在 App Engine Standard python 中使用 Google Stackdriver Logging 时出错

如何使用 Stackdriver Trace 在 App Engine Standard 中创建自定义 Span?