警告:无法更改每个人的权限:
在NetBeans中运行https://developers.google.com/drive/web/quickstart/java?hl=hu上的Java快速入门示例时,我收到错误代码:
Jun 04, 2015 12:12:11 AM com.google.api.client.util.store.FileDataStoreFactory setPermissionsToOwnerOnly WARNING: unable to change permissions for everybody: C:\Users\Quibbles\credentials\drive-api-quickstart
我究竟做错了什么?
编辑:这是完整的错误消息。
Jun 04, 2015 5:11:39 PM com.google.api.client.util.store.FileDataStoreFactory setPermissionsToOwnerOnly WARNING: unable to change permissions for owner: C:\Users\Quibbles\.credentials\drive-api-quickstart Exception in thread "main" java.lang.NullPointerException at java.io.Reader.(Reader.java:78) at java.io.InputStreamReader.(InputStreamReader.java:72) at DriveQuickstart.authorize(DriveQuickstart.java:64) at DriveQuickstart.getDriveService(DriveQuickstart.java:87) at DriveQuickstart.main(DriveQuickstart.java:96) Java Result: 1
有同样的问题,浪费了几个小时才意识到“无法更改所有者的权限:C:\ Users \ Quibbles.credentials \ drive-api-quickstart”
只是一个警告。
真正的问题是这里的空指针。
InputStream in = DriveQuickstart.class.getResourceAsStream("/client_secret.json");
在我的案例中,这一行是问题所在。 “in”为null,因此为空指针。
InputStream in = new FileInputStream("\\client_secret.json");
这解决了我的问题。
实际问题是Google的setPermissionsToOwnerOnly API代码中的错误
编写的代码仅适用于基于Linux / Unix的系统,而不适用于基于Windows ACL的系统。
您可以忽略该警告或编写自己的DataStore类,为Windows正确设置权限。
我也会尝试在谷歌上提交一个bug。
我在Eclipse中遇到了同样的问题。 这是一个解决方案:
-
在管理员模式下运行eclipse
-
清除目录
C:/Users/
.credentials/calendar-java-quickstart.json -
将.json文件复制到bin目录,例如
bin/main/resources/client_secret.json
你现在可以自由奔跑了。
我刚刚在https://developers.google.com/google-apps/calendar/quickstart/java示例中遇到了同样的问题。 我怀疑问题是您在Windows中运行它并且您运行它的JVM没有管理员权限来更改Windows中的文件权限。
请参阅在Windows上以管理员身份运行Java应用程
运行教程“ https://developers.google.com/drive/v2/web/quickstart/java ”中给出的示例时遇到同样的问题。 遵循教程中给出的指令同上,但不断获得此权限exception。 最终,设法通过将“client_secret.json”移动到“\ build \ classes \ main \ classes”文件夹来对其进行排序。 此外,在首次使用“gradle -q run”构建项目之前,请删除“C:\ Users \ userName \ .credentials”文件夹中的所有文件。