GAE数据存储区 - 无法在Windows上以编程方式启动LocalDevelopmentDatastore

时间:2015-09-30 14:30:04

标签: java google-app-engine google-cloud-datastore google-api-java-client

环境:
Java API google-api-services-datastore-protobuf v1beta2-rev1-3.0.0
操作系统:Windows 7.

目标:
使用以下方法启动本地数据存储服务器:

public void start(String sdkPath, String dataset, String cmdLineOptions)

来自com.google.api.services.datastore.client.LocalDevelopmentDatastore.java,以便在单元测试中使用它。

步骤:
我下载了gcd工具gcd-v1beta2-rev1-3.0.2.zip并将其放到C:\gcd文件夹中 (gcd.cmdgcd.sh的路径是`C:\ gcd)。 另外,我设置了环境变量:

"DATASTORE_HOST"="http://localhost:8080" and  
"DATASTORE_DATASET"="myapp".  

问题:

  

发生LocalDevelopmentDatastoreException   引起:java.io.IOException:无法运行程序" ./ gcd.sh" (在目录" C:\ gcd"):CreateProcess error = 2,系统找不到指定的文件。

请注意,它会尝试查找./gcd.sh但不会gcd.cmd

Java代码:

String datasetName = "myapp";
String hostName = "http://localhost:8080";

DatastoreOptions options = new DatastoreOptions.Builder()
            .host(hostName)
            .dataset(datasetName).build();

LocalDevelopmentDatastoreOptions localOptions = new LocalDevelopmentDatastoreOptions.Builder()
            .addEnvVar("DATASTORE_HOST", hostName)
            .addEnvVar("DATASTORE_DATASET", datasetName).build();

LocalDevelopmentDatastore datastore = LocalDevelopmentDatastoreFactory.get().create(options, localOptions);

datastore.start("C:\\gcd", datasetName);

此代码基于LocalDevelopmentDatastore.java文档中的示例。

请帮忙。

2 个答案:

答案 0 :(得分:1)

似乎该方法仅编程为查找gcd.sh,因为它没有出现在您的配置中的任何内容可能有助于此失败。我建议您在Cloud Platform Public Issue Tracker中打开缺陷报告。

答案 1 :(得分:0)

您认为gcloud-java使用数据存储区了吗? 它还有一个选项,可以使用LocalGcdHelper以编程方式启动本地数据存储区,该选项可以在Windows上运行。