2015-06-04 11 views
22

Quando si esegue l'esempio QuickStart Java a https://developers.google.com/drive/web/quickstart/java?hl=hu in NetBeans, sto ricevendo il codice di errore:Avviso: impossibile modificare le autorizzazioni per tutti:

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 

Che cosa sto facendo di sbagliato?

Modifica: questo è il messaggio di errore completo.

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 
+0

Si prega di inviare l'avviso completo. – KRR

+0

Il servizio potrebbe essere già in esecuzione. Elimina la vecchia istanza, che dovrebbe funzionare di nuovo. – KRR

+1

@KRR Ho aggiornato il post per includere gli altri messaggi di errore che sto ricevendo. Succede senza il servizio già in esecuzione. – quibblify

risposta

0

avuto lo stesso problema quando si esegue l'esempio dato nel tutorial "https://developers.google.com/drive/v2/web/quickstart/java". Seguì l'istruzione idem come dato nel tutorial, ma continuò a ottenere questa eccezione di permesso. Alla fine, è riuscito a risolverlo spostando "client_secret.json" nella cartella "\ build \ classes \ main \ classes". Inoltre, prima di creare il progetto con "gradle -q run" per la prima volta, eliminare tutti i file nella cartella "C: \ Users \ userName \ .credentials".

26

avuto lo stesso problema e ore sprecate prima di rendersi conto che "in grado di modificare le autorizzazioni per il proprietario: C: \ Users \ Quibbles.credentials \ drive-api-quickstart"
è solo un avvertimento.

Il vero problema è il puntatore nullo qui.

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

Questa linea era il problema nel mio caso. "in" era nullo e quindi il puntatore nullo.

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

Questo ha risolto il problema.

+1

Aveva lo stesso problema in "google-api-java-client-samples-master". Qui dovresti fare 'InputStreamReader in = new InputStreamReader (nuovo FileInputStream (" \\ client_secrets.json "));' Perché 'GoogleClientSecrets.load' non accetta solo un' InputStream'. –

10

Il vero problema è un bug nel codice API di Google per setPermissionsToOwnerOnly

Il codice è stato scritto di lavorare solo su sistemi basati su Linux/Unix e non i sistemi basati su Windows ACL.

È possibile ignorare l'avviso o scrivere la propria classe DataStore che imposta correttamente le autorizzazioni per Windows.

Ho intenzione di provare anche un bug su Google.

+2

Il problema di origine è in questo repository GitHub di proprietà di Google. Il codice non è stato aggiornato dal 2013. https://github.com/google/google-http-java-client/blob/dev/google-http-client/src/main/java/com/google/api/client /util/store/FileDataStoreFactory.java – JustADev

+2

Ho inviato una segnalazione di bug a Google: https://github.com/google/google-http-java-client/issues/315 – JustADev

+3

Per disabilitare il messaggio di AVVERTENZA causato dal Google code library uso bug: \t \t \t finale java.util.logging.Logger buggyLogger = java.util.logging.Logger.getLogger (FileDataStoreFactory.class.getName()); \t \t \t buggyLogger.setLevel (java.util.logging.Level.SEVERE); – JustADev

3

Ho riscontrato lo stesso problema in Eclipse. Ecco una soluzione:

  1. Run eclissi in modalità amministratore

  2. Cancella la directory C:/Users/<username>.credentials/calendar-java-quickstart.json

  3. Copiare il file .json directory bin, ad esempio, bin/main/resources/client_secret.json

si è liberi di correre adesso.