我正在尝试连接到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)
感谢您的帮助:)
答案 0 :(得分:1)
我的问题来自于我创建凭据对象的方式。
我现在不是从scracth创建它,而是从DatastoreHelper中获取它,如下所示:
凭证= DatastoreHelper.getServiceAccountCredential(serviceAccount,filename);