WedX - журнал о программировании и компьютерных науках

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

Я создавал свое тестовое приложение в 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

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

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


  • Может ли кто-нибудь объяснить, что для Android Studio означает использование JDK, отличного от Gradle? Для чего Android Studio нужен JDK, кроме компиляции Gradle? Я считаю, что IntellJ написан на самой Java и, следовательно, для работы потребуется среда выполнения Java (JRE), но для этого не потребуется JDK как таковой. Должно ли появиться сообщение о том, что Android Studio использует другую JVM / jre, чем Gradle? Или эта AS использует JVM / jre из другой установки Java, чем JDK Gradle? Я считаю, что Gradle нужна как JVM для собственного кода, так и JDK для компилятора. Так в чем же реальная проблема? 25.06.2020
  • Я предполагаю, что настоящая проблема в том, что Android Studio и Gradle могут работать на разных JVM, что вызывает два процесса ОС и просто недружелюбно к ресурсам. В файле | Структура проекта мы можем установить местоположение JDK для Gradle. Устанавливает ли это также местоположение JVM, на котором работает Gradle? Где Android Studio получает местоположение JVM? В Windows это может быть расположение переменной среды JAVA_HOME? Или он использует JVM из jre, который идет с ним? Как мы это контролируем? 25.06.2020
  • Все было бы просто, если бы существовал простой способ настроить JVM как для Android Studio, так и для Gradle - на экране «Структура проекта» есть опция только для Gradle. 25.06.2020

Ответы:


1

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

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

22.10.2019
  • Пробовал, затем получил ту же ошибку, что и в моем вопросе. Я на 64-битной винде. 22.10.2019
  • Это просто не сохраняет местоположение jdk. Когда я возвращаюсь в это меню, всегда есть предыдущее значение. 28.09.2020
  • Это помогло при переходе на полную сборку Kotlin DSL Gradle. 04.01.2021

  • 2

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

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

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

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

    26.02.2020

    3

    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 под окном Файл -> Структура проекта -> Расположение SDK, для которого задано указанное выше значение, и как AS, так и gradle должны использовать одно и то же JRE:

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

    20.03.2020

    4

    В Android Studio я сделал:

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

    Затем внизу есть раскрывающийся список: Расположение JDK:

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

    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. Больше не показывать это предупреждение
    18.10.2019
  • Затем я щелкнул неудовлетворительно: больше не показывать это предупреждение: / 18.10.2019

  • 5

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

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

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

    12.03.2020
    Новые материалы

    Объяснение документов 02: BERT
    BERT представил двухступенчатую структуру обучения: предварительное обучение и тонкая настройка. Во время предварительного обучения модель обучается на неразмеченных данных с помощью..

    Как проанализировать работу вашего классификатора?
    Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

    Работа с цепями Маркова, часть 4 (Машинное обучение)
    Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

    Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
    Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

    Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
    Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..

    Учебные заметки: создание моего первого пакета Node.js
    Это мои обучающие заметки, когда я научился создавать свой самый первый пакет Node.js, распространяемый через npm. Оглавление Глоссарий I. Новый пакет 1.1 советы по инициализации..

    Забудьте о Matplotlib: улучшите визуализацию данных с помощью умопомрачительных функций Seaborn!
    Примечание. Эта запись в блоге предполагает базовое знакомство с Python и концепциями анализа данных. Привет, энтузиасты данных! Добро пожаловать в мой блог, где я расскажу о невероятных..


    Для любых предложений по сайту: [email protected]