Como instruir o Gradle a usar Java em um local diferente?


9

Eu estava criando meu aplicativo de teste no Android Studio e, no log de eventos, dizia:

O Android Studio está usando este local do JDK: C: \ Arquivos de programas \ Android \ Android Studio \ jre, que é diferente do que Gradle usa por padrão: C: \ Arquivos de programas (x86) \ Java \ jdk1.8.0_181 O uso de locais diferentes pode aparecer vários daemons Gradle se as tarefas Gradle forem executadas na linha de comando enquanto estiver usando o Android Studio.

Então deu estas opções:

  1. Mais informações...
  2. Defina o Android Studio para usar o mesmo JDK que Gradle e sincronizar
  3. Não mostrar este aviso novamente

Eu cliquei em:

Defina o Android Studio para usar o mesmo JDK que Gradle e sincronizar

então meu aplicativo não queria mais criar.

Este é o erro:

Falha na sincronização gradle: não foi possível iniciar o processo daemon.
Esse problema pode ser causado pela configuração incorreta do daemon.

Por exemplo, uma opção jvm não reconhecida é usada.
Consulte o capítulo do manual do usuário no daemon em https://docs.gradle.org/5.4.1/userguide/gradle_daemon.html

Linha de comando do processo: C: \ Arquivos de Programas (x86) \ Java \ jdk1.8.0_181 \ bin \ java.exe -Xmx1536m -Dfile.encoding = windows-1252 -Duser.country = ZA -Duser.language = en -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

Leia a seguinte saída do processo para saber mais:

Ocorreu um erro durante a inicialização da VM Não foi possível reservar espaço suficiente para o heap de objeto 1572864KB Consulte o log do IDE para obter mais detalhes (Ajuda | Mostrar log) (16 s 166 ms)

Eu verifiquei os logs de eventos:

Eu acho que anteriormente ele fez isso:

Instruindo o gradle a usar o java em C: / Arquivos de Programas / Android / Android Studio / jre

Agora diz o seguinte:

Instruindo o gradle a usar java em C: / Arquivos de Programas (x86) /Java/jdk1.8.0_181

Como faço para configurá-lo de volta ao modo como estava para que meu aplicativo pudesse compilar novamente?

Qualquer ajuda / conselho será apreciada

Respostas:


2

Vá para Arquivo, Estrutura do projeto, local do SDK e altere o menu suspenso do JDK para JAVA_HOME.

Estrutura do projeto no Androdi Studio 3.6 beta


11
Tentei que, em seguida, obteve o mesmo erro que na minha pergunta. Estou em um Windows de 64 bits.
Shiasu-sama

1

Você precisa alterar / adicionar uma variável de ambiente.

Siga este link para saber como alterar / adicionar variáveis ​​de ambiente.

Agora adicione / modifique a variável 'JAVA_HOME' e defina o caminho para C:\Program Files\Android\Android Studio\jre

Nota: Ao trabalhar em um projeto Java diferente posteriormente em um IDE diferente, talvez seja necessário alterar essa variável novamente para o local Java padrão (talvez neste caso C:/Program Files (x86)/Java/jdk1.8.0_181)


0

Gradle está claramente usando minha instalação java nativa (da Oracle), enquanto o Android Studio está usando sua própria versão.

Eu ignorei esse aviso desde a atualização do Android Studio para 3.6.1. Nenhum problema até agora. De fato, lancei novas versões do meu aplicativo sem problemas.

Se isso se tornar irritante e, se você não tiver outros problemas, terá a opção de ignorar avisos futuros: basta pressionar o aviso e selecionar a opção para ignorar futuras mensagens relacionadas a esse aviso.


0

Ubuntu 16.04 LTS, Android Studio 3.6

Foi assim que me livrei do aviso:

1) localize o script do iniciador AS studio.shem sua máquina, o meu está em: /opt/android-studio-3.x/bin
2) dentro do script, você encontrará as seguintes linhas:

# ---------------------------------------------------------------------
# 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, por algum motivo, você não conseguir exportar suas variáveis ​​de ambiente para o iniciador (como acontece comigo a partir da sessão xfce4), poderá escrever o JAVA_HOMEvalor desejado dentro do studio.jdkarquivo cuja localização no meu sistema, conforme script, está em $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) Por último, reiniciando a partir da sessão de DE, você deve ver o JAVA_HOMEsob o File -> Estrutura do Projeto -> SDK Location janela definida para o valor acima e ambos AS e Gradle deve usar a mesma JRE:

Janela Estrutura do Projeto


-1

No Android Studio, fiz:

Arquivo> Estrutura do projeto ...> Localização do SDK (no painel esquerdo)

Em seguida, na parte inferior, há um menu suspenso abaixo: Localização do JDK:

Eu então selecionei / naveguei para este diretório:

C: \ Arquivos de programas \ Java \ jdk1.8.0_181

O Gradle Sync funcionou novamente para mim depois disso, mas ainda recebo este aviso:

O Android Studio está usando este local JDK: C: \ Arquivos de Programas \ Java \ jdk1.8.0_181, que é diferente do que Gradle usa por padrão: C: \ Arquivos de Programas (x86) \ Java \ jdk1.8.0_181 . O uso de locais diferentes pode gerar vários daemons Gradle se as tarefas Gradle forem executadas na linha de comando enquanto estiver usando o Android Studio.

  1. Mais informações...
  2. Configure o Android Studio para usar o mesmo JDK que o Gradle e sincronizar o projeto
  3. Não mostrar este aviso novamente

Em seguida, cliquei no insatisfatório: "Não mostre este aviso novamente": /
Shiasu-sama 18/10/1919
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.