无法提供key.p12文件以连接到Google Cloud Datastore

时间:2015-06-23 08:55:59

标签: java google-cloud-datastore

我正在尝试连接到Google Cloud Datastore,我正在关注本教程:

  

https://cloud.google.com/datastore/docs/getstarted/start_java/

我正在设法连接并检索我想要的所有信息,但我正在连接环境中的选项,如下所示:

  

datastore =   DatastoreFactory.get()。创建(的DataStoreHelper。的 getOptionsfromEnv()             .dataset(集编号).build());

现在我正在尝试以编程方式提供选项。 据我所知,我可以通过修改凭证来做到这一点:

  

datastore = DatastoreFactory.get()。create(DatastoreHelper   .getOptionsfromEnv()。凭证(凭据)   .dataset(集编号).build());

以下是我申报资格的方式:

String filename = "XXX/src/main/webapp/WEB-INF/XXX9f29f.p12";

    credential = new GoogleCredential.Builder()
                        .setTransport(HTTP_TRANSPORT)
                        .setJsonFactory(JSON_FACTORY)
                        .setServiceAccountId("XXXX@developer.gserviceaccount.com")
                        .setServiceAccountPrivateKeyFromP12File(new File(filename)).build();

我的问题是我从这一行得到了一个java.lang。 NullPointerException

  

.setServiceAccountPrivateKeyFromP12File(新文件(文件名))

我的应用程序具有对该文件的读/写访问权限,该文件位于webapp / WEB-INF文件夹中。

这是我的日志输出:

GRAVE: Unhandled exception
java.lang.NullPointerException
    at java.util.Collections$UnmodifiableCollection.<init>(Collections.java:1026)
    at java.util.Collections.unmodifiableCollection(Collections.java:1013)
    at com.google.api.client.googleapis.auth.oauth2.GoogleCredential.<init>(GoogleCredential.java:208)
    at com.google.api.client.googleapis.auth.oauth2.GoogleCredential$Builder.build(GoogleCredential.java:368)
    at com.databerries.bidder.DataBaseHandler.setEnv(DataBaseHandler.java:78)
    at com.databerries.bidder.WebServer.lambda$start$1(WebServer.java:75)
    ...
    at java.lang.Thread.run(Thread.java:745)

感谢您的帮助:)

1 个答案:

答案 0 :(得分:1)

我的问题来自于我创建凭据对象的方式。

我现在不是从scracth创建它,而是从DatastoreHelper中获取它,如下所示:

  

凭证=   DatastoreHelper.getServiceAccountCredential(serviceAccount,filename);