警告:无法更改每个人的权限:

在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中遇到了同样的问题。 这是一个解决方案:

  1. 在管理员模式下运行eclipse

  2. 清除目录C:/Users/.credentials/calendar-java-quickstart.json

  3. 将.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”文件夹中的所有文件。