2015-06-15 13 views
7

Ho usato il comando Gradle costruire in Centos 7 terminale ed ho ottenuto di uscita:Gradle Impossibile creare il servizio di tipo InitScriptHandler usando BuildScopeServices.createInitScriptHandler()

GUASTO: generazione non riuscita con un'eccezione.

  • Cosa è andato storto: Impossibile creare il servizio di tipo InitScriptHandler usando BuildScopeServices.createInitScriptHandler().

  • Prova: Esegui con l'opzione --stacktrace per ottenere la traccia dello stack. Esegui con l'opzione --info o --debug per ottenere più output di log.

+1

Avete privilegi appropriati per eseguire il comando? – Opal

+0

Penso che tu abbia ragione, il problema è con i privilegi, perché nel root user gradle funziona correttamente, provo a impostare 777 permessi per gradle folder usando il comando chmod -R 777 ./gradle-2.4, ma si verifica ancora un errore. La cartella Gradle I è stata decompressa nella home directory dell'utente con cui ottengo l'errore sopra descritto. –

+0

Plonking 'sudo' davanti al comando che ho digitato ha risolto questo problema. Il messaggio di errore potrebbe essere un po 'più utile a questo proposito. – ben3000

risposta

12

Provare a impostare la variabile GRADLE_USER_HOME in una cartella in cui si dispone di accesso valido. Quindi questo errore andrà via.

Per esempio: ho affrontato lo stesso problema oggi mentre eseguivo il comando "gradle clean" su una nuova macchina slave.

La mia versione di Gradle era 2.3.

Con --stacktrace, sono venuto a sapere che stava cercando di creare la cartella ".gradle" per la memorizzazione dei dati della cache di Gradle (mentre ho invocato Gradle per eseguire l'operazione pulita sullo slave) e stava cercando di creare quella cartella sotto /alcuni/posizione/dove/gradle/esiste OPPURE alcuni/percorso/posizione/xxx/yyy dove l'utente che stava eseguendo Gradle sulla macchina slave non aveva accesso valido per scrivere (creare cartella/file).

ovvero l'utente che ho usato per connettere dalla macchina Jenkins allo slave non ha avuto accesso in scrittura a touch/mkdir nella posizione predefinita (dove pensava Gradle, OK dovrei creare la cartella .gradle qui).

Per risolvere il problema, ho aggiunto la precedente variabile GRADLE_USER_HOME nella sezione Variabile ENVIRONMENT dello slave. Ora, dato che ho accesso valido nella mia home directory, ero OK.

Ambito:

GRADLE_USER_HOME=~/gradle_2_3_cache/.gradle 

ha risolto il problema.

È possibile impostarlo anche in ~/.gradle. Ma l'ho impostato sotto una cartella personalizzata all'interno della mia ~ home directory (gradle_2_3_cache). Questo mi aiuterà nel caso in cui io abbia un altro slave in esecuzione sulla stessa macchina Slave ma con una diversa versione di Gradle per la versione ex 2.5 etc e se voglio la cache .gradle per la versione 2.3 e 2.5/x in cartelle separate.

+0

Puoi spiegarlo meglio in ulteriori dettagli. Come sto affrontando anche il problema. E io sono un nuovo Bee in Android. –

2

Ho avuto lo stesso problema. Per me ha funzionato dopo aver escluso la cartella .grandle se non riesci a eliminare prova a rinominare.

0

Per riferimento futuro. Ho avuto lo stesso problema, il problema era che l'antivirus è stato il blocco piattaforma OpenJDK binario e java.exe che ha impedito Android Studio di essere in grado di modificare i file

1

Per me, uccidendo il demone Gradle davvero aiutato e risolto il problema.

+0

Lo stesso qui, il mio disco era pieno, ma anche dopo aver fatto più spazio, non funzionava ancora perché il demone Gradle non riceveva le notizie per qualche motivo. – wkarl

0

Se si utilizza wrapper gradlew, nella directory di creazione radice.gradle_new

mkdir .gradle_new 
chmod -R 777 .gradle_new 

e correre gradlew con argomenti:

--project-cache-dir .gradle_new 
Problemi correlati