首页 > 解决方案 > appengine-maven-插件。JsonSyntaxException:java.lang.IllegalStateException:应为 BEGIN_ARRAY,但在第 2 行第 1 列路径为 STRING

问题描述

我已经描述了我在这个问题上的情况:https ://github.com/GoogleCloudPlatform/appengine-plugins-core/issues/828 。

我想从我的 Windows 8.1 64 位计算机上使用 appengine-maven-plugin (v2.2.0) 将我的 Spring Boot 应用程序部署到 Google Cloud App Engine。

实际情况:

请查看堆栈跟踪的以下部分:

引起:com.google.gson.JsonSyntaxException:java.lang.IllegalStateException:预期 BEGIN_ARRAY 但在 com.google 的 com.google.gson.Gson.fromJson (Gson.java:939) 的第 2 行第 1 列路径 $ 处为字符串.gson.Gson.fromJson (Gson.java:892) 在 com.google.gson.Gson.fromJson (Gson.java:841) 在 com.google.cloud.tools.appengine.operations.cloudsdk.serialization.CloudSdkComponent.fromJsonList (CloudSdkComponent.java:67) 在 com.google.cloud.tools.managedcloudsdk.ManagedCloudSdk.isUpToDate (ManagedCloudSdk.java:153)

问题很明显: ManagedCloudSdk类第152行产生的result变量的值不是json格式的。

我使用命令提示符在我的机器上执行了以下命令:

gcloud 组件列表 --format=json --filter=state.name:更新可用

由于“更新”和“可用”之间的空格字符,导致错误:

错误:(gcloud.components.list)无法识别的参数:可用

所以,我认为这个错误消息是结果变量的值。由于它没有 json 格式,因此会引发异常。

预期情况:

我尝试了以下命令:

gcloud 组件列表 --format=json --filter=state.name:"更新可用"

它工作得很好,结果产生了一个空数组。所以,我想知道如果 updateAvailableCommand 变量是这样创建的,结果会怎样:

`    List<String> updateAvailableCommand = Arrays.asList(getGcloudPath().toString(),"components","list","--format=json","--filter=state.name:\"Update Available\"");    `

你怎么看?还是你有更好的主意?

提前感谢您的帮助和时间!

最好的问候,拉斯洛

标签: javaspring-bootgoogle-app-engine

解决方案


我已经用 VirtualBox 安装了 Ubuntu 操作系统,并且它工作正常。


推荐阅读