Come istruire Gradle ad usare Java da una posizione diversa?


9

Stavo costruendo la mia app di prova in Android Studio, quindi nel registro eventi c'era scritto:

Android Studio utilizza questa posizione JDK: C: \ Programmi \ Android \ Android Studio \ jre che è diverso da ciò che Gradle utilizza per impostazione predefinita: C: \ Programmi (x86) \ Java \ jdk1.8.0_181 L'utilizzo di posizioni diverse può generare più demoni Gradle se le attività Gradle vengono eseguite dalla riga di comando durante l'utilizzo di Android Studio.

Quindi ha dato queste opzioni:

  1. Ulteriori informazioni...
  2. Imposta Android Studio per utilizzare lo stesso JDK di Gradle e sincronizzazione
  3. Non mostrare più questo avviso

Ho cliccato su:

Imposta Android Studio per utilizzare lo stesso JDK di Gradle e sincronizzazione

quindi la mia app non voleva più essere costruita.

Questo è l'errore:

Sincronizzazione gradi non riuscita: impossibile avviare il processo daemon.
Questo problema potrebbe essere causato da un'errata configurazione del demone.

Ad esempio, viene utilizzata un'opzione jvm non riconosciuta.
Fare riferimento al capitolo Manuale utente sul demone all'indirizzo https://docs.gradle.org/5.4.1/userguide/gradle_daemon.html

Riga di comando del processo: C: \ Programmi (x86) \ Java \ jdk1.8.0_181 \ bin \ java.exe -Xmx1536m -Dfile.encoding = windows-1252 -Duser.country = ZA -Duser.language = it -Duser. variante -cp C: \ Users \ {MyUserName} \. gradle \ wrapper \ dists \ gradle-5.4.1-all \ 3221gyojl5jsh0helicew7rwx \ gradle-5.4.1 \ lib \ gradle-launcher-5.4.1.jar org.gradle. launcher.daemon.bootstrap.GradleDaemon 5.4.1

Si prega di leggere il seguente processo di output per saperne di più:

Errore durante l'inizializzazione della macchina virtuale Impossibile riservare spazio sufficiente per heap di oggetti 1572864KB Consultare il registro IDE per ulteriori dettagli (Guida | Mostra registro) (16 s 166 ms)

Ho controllato i registri degli eventi:

Penso che in precedenza ha fatto questo:

Indicare a Gradle di usare Java da C: / Program Files / Android / Android Studio / jre

Ora dice questo:

Indicare a Gradle di usare Java da C: / Program Files (x86) /Java/jdk1.8.0_181

Come faccio a ripristinarlo com'era in modo che la mia app possa essere ricostruita di nuovo?

Qualsiasi aiuto / consiglio sarà apprezzato

Risposte:


2

Vai a File, Struttura del progetto, Posizione SDK e modifica il menu a discesa della posizione JDK in JAVA_HOME.

Struttura del progetto in Androdi Studio 3.6 beta


1
Ho provato che poi ho avuto lo stesso errore della mia domanda. Sono su un Windows a 64 bit.
Shiasu-sama,

1

È necessario modificare / aggiungere una variabile di ambiente.

Segui questo link per sapere come modificare / aggiungere variabili d'ambiente.

Ora aggiungi / modifica la variabile "JAVA_HOME" e imposta il percorso su C:\Program Files\Android\Android Studio\jre

Nota: quando si lavorerà su un progetto Java diverso in un secondo momento in un IDE diverso, potrebbe essere necessario modificare nuovamente questa variabile nella posizione Java predefinita (in questo caso forse C:/Program Files (x86)/Java/jdk1.8.0_181)


0

Gradle sta chiaramente usando la mia installazione java nativa (da Oracle) mentre Android Studio sta usando la sua versione.

Ho ignorato questo avviso dall'aggiornamento di Android Studio alla 3.6.1. Nessun problema finora. In effetti, ho rilasciato nuove versioni della mia app senza problemi.

Se questo diventa fastidioso e SE non hai altri problemi, hai un'opzione per ignorare gli avvisi futuri: basta premere l'avviso e selezionare l'opzione per ignorare i messaggi futuri relativi a questo avviso.


0

Ubuntu 16.04 LTS, Android Studio 3.6

È così che mi sono liberato dell'avvertimento:

1) individua lo script AS launcher studio.shsul tuo computer, il mio è sotto: /opt/android-studio-3.x/bin
2) all'interno dello script, troverai le seguenti righe:

# ---------------------------------------------------------------------
# Locate a JDK installation directory which will be used to run the IDE.
# Try (in order): STUDIO_JDK, studio.jdk, ./jre64, JDK_HOME, JAVA_HOME, "java" in PATH.
# ---------------------------------------------------------------------
if [ -n "$STUDIO_JDK" -a -x "$STUDIO_JDK/bin/java" ]; then
  JDK="$STUDIO_JDK"
fi

if [ -z "$JDK" -a -s "$HOME/.AndroidStudio3.6/config/studio.jdk" ]; then
  USER_JRE=`"$CAT" $HOME/.AndroidStudio3.6/config/studio.jdk`
...

3) se, per qualche motivo, non riesci a esportare le variabili di ambiente nel programma di avvio (come accade a me dalla sessione xfce4), puoi scrivere il JAVA_HOMEvalore desiderato all'interno del studio.jdkfile la cui posizione sul mio sistema, come da script, è in $HOME/.AndroidStudio3.6/config/studio.jdk.

$ echo $JAVA_HOME > $HOME/.AndroidStudio3.6/config/studio.jdk
$ cat $HOME/.AndroidStudio3.6/config/studio.jdk
/usr/lib/jvm/java-8-oracle

4) infine, riavviando AS dalla sessione DE, si dovrebbe vedere il JAVA_HOMEsotto il File -> Struttura del progetto -> SDK Location finestra impostato al valore sopra e sia come e Gradle dovrebbe usare lo stesso JRE:

Finestra della struttura del progetto


-1

Su Android Studio ho fatto:

File> Struttura del progetto ...> Posizione SDK (nel riquadro a sinistra)

Quindi in basso c'è un menu a discesa qui sotto: Posizione JDK:

Ho quindi selezionato / navigato in questa directory:

C: \ Programmi \ Java \ jdk1.8.0_181

Gradle Sync ha funzionato di nuovo per me dopo quello, ma ricevo ancora questo avviso:

Android Studio utilizza questa posizione JDK: C: \ Programmi \ Java \ jdk1.8.0_181 che è diverso da quello che Gradle utilizza per impostazione predefinita: C: \ Programmi (x86) \ Java \ jdk1.8.0_181 . L'uso di posizioni diverse può generare più daemon Gradle se le attività Gradle vengono eseguite dalla riga di comando durante l'utilizzo di Android Studio.

  1. Ulteriori informazioni...
  2. Imposta Android Studio per utilizzare lo stesso JDK di Gradle e sincronizza progetto
  3. Non mostrare più questo avviso

Quindi ho cliccato sull'insoddisfacente: "Non mostrare più questo avviso": /
Shiasu-sama,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.