警告:无法更改所有人的权限:

2022-09-01 10:31:41

在 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.<init>(Reader.java:78)
    at java.io.InputStreamReader.<init>(InputStreamReader.java:72)
    at DriveQuickstart.authorize(DriveQuickstart.java:64)
    at DriveQuickstart.getDriveService(DriveQuickstart.java:87)
    at DriveQuickstart.main(DriveQuickstart.java:96)
Java Result: 1

答案 1

遇到同样的问题并浪费了数小时才意识到“无法更改所有者的权限:C:\Users\Quibbles.credentials\drive-api-quickstart”
只是一个警告。

真正的问题是这里的空指针。

InputStream in =
            DriveQuickstart.class.getResourceAsStream("/client_secret.json");

这行是我的情况中的问题。“in”为空,因此为空指针。

InputStream in    = new FileInputStream("<Full Path>\\client_secret.json");  

这解决了我的问题。


答案 2

实际问题是Google的API代码中的一个错误,用于setPermissionsToOwnerOnly。

该代码编写为仅适用于基于Linux / Unix的系统,而不适用于基于Windows ACL的系统。

您可以忽略该警告,也可以编写自己的 DataStore 类来正确设置 Windows 的权限。

我也将尝试向Google提交错误。


推荐