Как поручить Gradle использовать Java из другого места?


9

Я создавал свое тестовое приложение в Android Studio, а затем в журнале событий было сказано:

Android Studio использует этот каталог JDK: C: \ Program Files \ Android \ Android Studio \ jre, который отличается от того, который используется по умолчанию в Gradle: C: \ Program Files (x86) \ Java \ jdk1.8.0_181. Может появиться и другое местоположение несколько демонов Gradle, если задачи Gradle запускаются из командной строки при использовании Android Studio.

Затем дал эти варианты:

  1. Больше информации...
  2. Настройте Android Studio на использование того же JDK, что и Gradle, и синхронизацию
  3. Не показывать это предупреждение снова

Я нажал на:

Настройте Android Studio на использование того же JDK, что и Gradle, и синхронизацию

тогда мое приложение больше не хотело строить.

Это ошибка:

Сбой синхронизации Gradle: невозможно запустить процесс демона.
Эта проблема может быть вызвана неправильной настройкой демона.

Например, используется нераспознанная опция jvm.
Обратитесь к главе «Руководство пользователя» для демона по адресу https://docs.gradle.org/5.4.1/userguide/gradle_daemon.html.

Командная строка процесса: C: \ Program Files (x86) \ Java \ jdk1.8.0_181 \ bin \ java.exe -Xmx1536m -Dfile.encoding = windows-1252 -Duser.country = ZA -Duser.language = en -Duser. вариант -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

Пожалуйста, прочитайте следующий вывод процесса, чтобы узнать больше:

Произошла ошибка во время инициализации ВМ. Не удалось зарезервировать достаточно места для кучи объектов 1572864 КБ. Для получения более подробной информации обратитесь к журналу IDE (Справка | Показать журнал) (16 с 166 мс)

Я проверил журналы событий:

Я думаю, что раньше это было сделано:

Инструктаж Gradle по использованию Java из C: / Program Files / Android / Android Studio / jre

Теперь это говорит это:

Инструктаж Gradle по использованию Java из C: / Program Files (x86) /Java/jdk1.8.0_181

Как мне вернуть его на прежнее состояние, чтобы мое приложение могло снова скомпилироваться?

Любая помощь / совет будут оценены

Ответы:


2

Перейдите в Файл, Структура проекта, Расположение SDK и измените раскрывающийся список местоположения JDK на JAVA_HOME.

Структура проекта в Androdi Studio 3.6 beta


1
Пытался, что затем получил ту же ошибку, что и в моем вопросе. Я на 64-битной Windows.
Шиасу-сама

1

Вам нужно изменить / добавить переменную окружения.

Перейдите по этой ссылке, чтобы узнать, как изменить / добавить переменные среды.

Теперь добавьте / измените переменную 'JAVA_HOME' и установите путь к C:\Program Files\Android\Android Studio\jre

Примечание: Когда вы собираетесь работать над другим проектом Java позже в другой IDE, вам, возможно, придется снова изменить эту переменную на расположение Java по умолчанию (в данном случае, возможно C:/Program Files (x86)/Java/jdk1.8.0_181)


0

Gradle явно использует мою нативную установку Java (от Oracle), тогда как Android Studio использует свою собственную версию.

Я игнорировал это предупреждение с момента обновления Android Studio до 3.6.1. Нет проблем до сих пор. Действительно, я выпустил новые версии моего приложения без проблем.

Если это становится раздражающим, и если у вас нет других проблем, у вас есть возможность игнорировать будущие предупреждения: просто нажмите предупреждение и выберите опцию, чтобы игнорировать будущие сообщения, связанные с этим предупреждением.


0

Ubuntu 16.04 LTS, Android Studio 3.6

Вот как я избавился от предупреждения:

1) Найдите скрипт запуска AS studio.shна вашем компьютере, мой находится под: /opt/android-studio-3.x/bin
2) внутри скрипта вы найдете следующие строки:

# ---------------------------------------------------------------------
# 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) если по какой-то причине вы не можете экспортировать переменные среды в средство запуска (как это происходит со мной из сеанса xfce4), вы можете записать нужное JAVA_HOMEзначение в studio.jdkфайл, местоположение которого в моей системе, согласно сценарий, находится в $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) наконец, перезапустив AS из сеанса DE, вы должны увидеть в JAVA_HOMEокне File -> Project Structure -> SDK Location указанное выше значение, и AS, и gradle должны использовать одну и ту же JRE:

Окно структуры проекта


-1

На Android Studio я сделал:

Файл> Структура проекта ...> Расположение SDK (на левой панели)

Затем внизу есть выпадающий список ниже: JDK location:

Затем я выбрал / просмотрел этот каталог:

C: \ Program Files \ Java \ jdk1.8.0_181

Gradle Sync снова работал для меня после этого, но я все еще получаю это предупреждение:

Android Studio использует это расположение JDK: C: \ Program Files \ Java \ jdk1.8.0_181, которое отличается от того, которое Gradle использует по умолчанию: C: \ Program Files (x86) \ Java \ jdk1.8.0_181 . Использование разных местоположений может порождать несколько демонов Gradle, если задачи Gradle запускаются из командной строки при использовании Android Studio.

  1. Больше информации...
  2. Установите в Android Studio тот же JDK, что и в Gradle, и синхронизируйте проект
  3. Не показывать это предупреждение снова

Затем я нажал на неудовлетворительное: «Больше не показывать это предупреждение»: /
Shiasu-sama
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.