如何修复错误:此服务需要项目ID但无法确定

问题描述 投票:0回答:3

我正在尝试从 AppEngine 向 Google Datastore 插入数据,但出现错误:

java.lang.IllegalArgumentException: A project ID is required for this service but could not be determined from the builder or the environment.  Please set a project ID using the builder.
    at com.google.common.base.Preconditions.checkArgument(Preconditions.java:92)
    at com.google.cloud.ServiceOptions.<init>(ServiceOptions.java:324)
    at com.google.cloud.datastore.DatastoreOptions.<init>(DatastoreOptions.java:85)
    at com.google.cloud.datastore.DatastoreOptions.<init>(DatastoreOptions.java:32)
    at com.google.cloud.datastore.DatastoreOptions$Builder.build(DatastoreOptions.java:75)
    at com.google.cloud.datastore.DatastoreOptions.defaultInstance(DatastoreOptions.java:123)

这是我的代码:

Datastore datastore = DatastoreOptions.defaultInstance().service();     
             KeyFactory keyFactory = datastore.newKeyFactory().kind("keyKind"); 
             Key key = keyFactory.newKey("keyName"); 
             Entity entity = Entity.builder(key) 
                 .set("name", "John Doe") 
                 .set("age", 30) 
                 .set("access_time", DateTime.now()) 
                 .build(); 
             datastore.put(entity); 

如何解决这个错误?

google-app-engine google-cloud-datastore gcloud gcloud-java
3个回答
20
投票

在我的例子中,下一个代码正在运行:

    BigQuery bigquery = BigQueryOptions.newBuilder().setProjectId("XXXXX")
            .setCredentials(
                    ServiceAccountCredentials.fromStream(new FileInputStream("key.json"))
            ).build().getService();

我在builder中设置了projectId。


2
投票

您运行的是 AE 标准版还是 AE 灵活版

确保您的类路径(WEB-INF/lib 目录)中有 App Engine api jar


2
投票

我可以通过将以下环境变量设置为项目 id 来解决这个问题

GCLOUD_PROJECT

如果这不起作用试试

GCP_PROJECT

更多信息在这里 https://cloud.google.com/functions/docs/configuring/env-var

© www.soinside.com 2019 - 2024. All rights reserved.