it-swarm.com.ru

Gradle находит неправильный Java_HOME, хотя он установлен правильно

При попытке запустить Gradle я получаю следующую ошибку:

# gradle

ERROR: Java_HOME is set to an invalid directory: /usr/lib/jvm/default-Java

Please set the Java_HOME variable in your environment to match the
location of your Java installation.

Однако, когда я проверяю переменную Java_HOME, я получаю:

# echo $Java_HOME 
/usr/lib/jvm/Java-7-Oracle

Мой Java_HOME определен в .bashrc, и я дважды проверил, что он установлен в качестве источника.

Запуск Java -version также подтверждает, что Java_HOME установлен правильно и находится в переменной PATH.

# Java -version
Java version "1.7.0_51"
Java(TM) SE Runtime Environment (build 1.7.0_51-b13)
Java HotSpot(TM) 64-Bit Server VM (build 24.51-b03, mixed mode)

Я также проверил, что /usr/bin/Java символьные ссылки на /etc/alternatives/Java, который в свою очередь правильно символические ссылки на /usr/lib/jvm/Java-7-Oracle/jre/bin/Java

Кроме того, я проверил, что в .bash_profile или /etc/profile нет повторяющихся определений Java_HOME. 

Итак, мой вопрос: как/почему Gradle находит /usr/lib/jvm/default-Java, и, что более важно, как мне указать его в правильном каталоге? 

Другие программы, для которых требуется JDK, работают нормально, поэтому я считаю, что это проблема Gradle. Я также попытался переустановить Gradle, который не имел никакого значения.

Я использую 64-битную версию Xubuntu (база Ubuntu 13.10)

149
James Barnett

Оказывается, что конкретный бинарный файл Gradle, который я скачал из репозитория Ubuntu 13.10 самой, пытается экспортировать Java_HOME. Спасибо Лукас за предложение.

/usr/bin/gradle строки 70:

export Java_HOME=/usr/lib/jvm/default-Java

Комментирование этой строки решает проблему, и Gradle находит правильный путь к двоичному файлу Java. 

Если вы просто скачиваете бинарный файл с их сайта у него нет этой проблемы, Это проблема с версией репозитория Ubuntu. Также, кажется, есть некоторые другие проблемы с версией 13.10.

249
James Barnett

добавить символическую ссылку 

Sudo ln -s /usr/lib/jvm/Java-7-Oracle /usr/lib/jvm/default-Java
46
Shashi

Для меня эта ошибка произошла из-за причины Gradle , установленной как Sudo , и я пытался как пользователь по умолчанию запустить Gradle.

Пытаться:

Sudo gradle -version

или же

Sudo gradle -v
12
Jyoti Prakash

Решение состоит в том, чтобы сделать Java_HOME == dir выше bin, где javac живет как в 

type javac

javac is /usr/bin/javac   # now check if its just a symlink

ls -la /usr/bin/javac 

/usr/bin/javac -> /etc/alternatives/javac   # its a symlink so check again

ls -la /etc/alternatives/javac  # now check if its just a symlink

/etc/alternatives/javac -> /usr/lib/jvm/Java-8-openjdk-AMD64/bin/javac

Хорошо, так, наконец, нашел корзину выше фактического Javac, так что сделайте это

export Java_HOME=/usr/lib/jvm/Java-8-openjdk-AMD64
export PATH=$Java_HOME/bin:$PATH

выше можно упростить и обобщить до

which javac >/dev/null 2>&1 || die "ERROR: no 'javac' command could be found in your PATH"
export Java_HOME=$(dirname $(dirname $(readlink -f $(which javac)  )))
11
Scott Stensland

Попробуйте установить последнюю версию gradle,

Sudo add-apt-repository ppa:cwchien/gradle

Sudo apt-get update

Sudo apt-get install gradle

Если мы установим из репозитория Ubuntu, он установит старую версию (для меня это был Gradle 1.4). В более старой версии он устанавливает Java home из gradle как export Java_HOME=/usr/lib/jvm/default-Java. Последняя версия не имеет этой проблемы.

7
Mohammed Safeer

Вы export ваш Java_HOME? Без экспорта параметр не будет распространяться на команды, запускаемые внутри этой оболочки. Кроме того, Java -version не использует Java_HOME, скорее он использует первую Java, найденную в вашем пути. Убедитесь, что ваш .bashrc выглядит примерно так:

Java_HOME=/path/to/Java/home
export Java_HOME
4
Lucas

У меня была такая же проблема, но я не нашел команду экспорта в строке 70 в файле Gradle для последней версии 2.13, но я понимаю глупую ошибку, которая заключается в следующем, 

Если вы не нашли строку 70 с командой экспорта в файле Gradle в папке вашего каталога/bin /, то проверьте ~/.bashrc, если вы найдете export Java_HOME==/usr/lib/jvm/Java-7-openjdk-AMD64/bin/Java, затем удалите /bin/Java из этой строки, например, Java_HOME==/usr/lib/jvm/Java-7-openjdk-AMD64, и это в path> >> вместо этого export PATH=$PATH:$HOME/bin:Java_HOME/, это будет export PATH=$PATH:$HOME/bin:Java_HOME/bin/Java. Затем запустите source ~/.bashrc.

Причина в том, что если вы проверите свой файл Gradle, вы найдете в строке 70 (если нет команды экспорта) или в строке 75,

JAVACMD="$Java_HOME/bin/Java"
    fi
    if [ ! -x "$JAVACMD" ] ; then
        die "ERROR: Java_HOME is set to an invalid directory: $Java_HOME

Это означает, что /bin/Java уже существует, поэтому его необходимо вычесть из пути Java_HOME.

Это случилось в моем случае.

4
nothingSpecial

Я столкнулся с этой проблемой, когда запускаю следующую команду в Ubuntu:

ionic build Android

Чтобы решить эту проблему, я сделал следующие шаги:

ln -sf /usr/lib/jvm/Java-7-openjdk-AMD64/jre/bin/Java /usr/lib/jvm/default-Java

Добавьте Java_HOME в/etc/environment:

vi /etc/environment

Добавлять:

Java_HOME="/usr/lib/jvm/default-Java"

После сохранения прочитайте это:

source /etc/environment

Наконец, вы можете запустить команду сборки.

3
Agilox

Вы также можете перейти в папку bin внутри вашей установочной папки gradle и исправить параметр Java_HOME в файле gradle.bat . В моем случае мой Java_HOME был установлен в c:\Program files\Java\bin Java_HOME в gradle.bat было установлено значение% Java_HOME%\bin\Java.exe.

Я исправил Java_HOME в gradle.bat, и это сработало.

Спасибо!!!

2
asp_NewBee
Sudo ln -s /usr/lib/jvm/Java-7-Oracle/jre /usr/lib/jvm/default-Java

Создайте символическую ссылку на каталог по умолчанию Java.

Вы можете найти свой каталог Java по

readlink -f $(which Java) 
# outputs: /usr/lib/jvm/Java-7-Oracle/jre/bin/Java
# Remove the last `/bin/Java` and use it in above symbolic link command.
2
Venkat Kotra

Для меня явным набором в разделе аргументов конфигурации внешних инструментов в Eclipse была проблема.

enter image description here

2
Aneesh Vijendran

У меня тоже была проблема с этим. Это сказало неправильный каталог, когда это было правильно. Поэтому я только что создал локальную переменную с именем Java_HOME, в которой отсутствует финальная/bin/Java. Это работало нормально для меня.

1
Bedrockbreaker

В моем Ubuntu у меня 2 дня болит голова по этому вопросу.

Шаг 1. Введите на терминале whereis Java, тогда он отобразит что-то вроде этого

Java: /usr/bin/Java /etc/Java /usr/share/Java /usr/lib/jvm/Java-8-openjdk-AMD64/bin/Java /usr/share/man/man1/Java.1.gz

Шаг 2. Запишите путь: /usr/lib/jvm/Java-8-openjdk-AMD64/bin/Java

исключить bin/Java

ваш Java_HOME = /usr/lib/jvm/Java-8-openjdk-AMD64

0
Las Lemieux

Перед запуском команды попробуйте ввести:

export Java_HOME="path_to_Java_home"

Где path_to_Java_home - это папка, в которой находится ваш bin/Java.

Если Java установлена ​​правильно, вы можете найти ее местоположение с помощью команды:

readlink -f $(which Java)

Не забудьте удалить bin/Java с конца пути при помещении его в Java_HOME

0
Jasper Kinoti

Если среда GRADLE_HOME и Java_HOME настроена правильно, проверьте каталог JDK и убедитесь, что у вас есть файлJava.exeпо указанному ниже пути.

C:\Program Files (x86)\Java\jdk1.8.0_181\bin

Как ошибка упоминается в файле gradle.bat

:findJavaFromJavaHome
set Java_HOME=%Java_HOME:"=%
set Java_EXE=%Java_HOME%/bin/Java.exe

if exist "%Java_EXE%" goto init

echo.
echo ERROR: Java_HOME is set to an invalid directory: %Java_HOME%
echo.
echo Please set the Java_HOME variable in your environment to match the
echo location of your Java installation.

Он не может найти вашу установку Java. Так что найдите и установите 

Java.exe

под %Java_HOME%/bin, если все правильно.

Это работает для меня (моя учетная запись была отключена клиентом, и его администратор удалил Java.exe из моего каталога.)

0
Harsh

[Windows] Как уже было сказано, похоже, что .bat -file пытается найти Java.exe из %Java_HOME%/bin/Java.exe, поэтому не находит его, поскольку bin дважды повторяется в пути . Удалите этот дополнительный /bin из gradle.bat. 

 Gradle

0
O95

В моем dockercontainer (будучи минимальным проблема с поиском Java) было то, что «которое» не было установлено. Компиляция проекта с использованием gradlew использовала которую в ./gradlew для поиска Java Установка позволила решить проблему.

0
lem-fr