In IntelliJ IDEA, using the Gradle window I am able to execute any and all Gradle tasks. However, when I try and execute the same tasks through the terminal window within the IDE, it hits me with the following error:
ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation.
This occurs when using gradle and gradlew. In IntelliJ -> File -> Project Structure -> Project then SDK is set correctly to 1.8. Any suggestions for resolving this so I can use the terminal to execute Gradle tasks would be greatly appreciated.
asked Jan 3, 2017 at 18:16
5
go to Java installation (C:Program FilesJavajdk ********) and copy the address file. Right click the «my computer» select «Properties» or go to «Control Panel > System and Security > System«. Select «Advanced system settings» then click the «Environment Variables» button. Click System Variables, New write Variable Name to «JAVA_HOME» and write Variable Value to Java installation folder address then click OK finish it.
dev.doc
5693 gold badges12 silver badges18 bronze badges
answered Jan 3, 2017 at 19:02
3
My answer is for the case when Ubuntu app is installed over Windows. So in Windows, I can run Ubuntu terminal. My Android Studio is installed on Windows. And I try to run gradle from the Ubuntu terminal. I tried to set up JAVA_HOME to multiple addresses via Ubuntu terminal:
export JAVA_HOME=/mnt/c/…
But nothing helped, including java address provided by Ubuntu («whereis java» command):
/usr/share/java
Then I merely did the same using Windows terminal (Command Prompt). And gradle worked.
answered Dec 22, 2020 at 22:51
Liker777Liker777
2,1444 gold badges17 silver badges24 bronze badges
I have just installed gradle from the terminal
sudo apt-get install gradle
After finishing am trying to run the command
gradle -v
I get the following error
ERROR: JAVA_HOME is set to an invalid directory: /usr/lib/jvm/java-7-oracle/jre/bin/java
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation.
When I run echo $JAVA_HOME
I get
/usr/lib/jvm/java-7-oracle/jre/bin/java
So that’s the correct path
I edited my bashrc file
added the following lines
export JAVA_HOME=/usr/lib/jvm/java-7-oracle/jre/bin/java
export JAVA_HOME
I still get the same error when I run gradle -v
Braiam
66.2k30 gold badges174 silver badges262 bronze badges
asked Jun 15, 2014 at 9:38
1
You have incorrectly set your JAVA_HOME
variable. It shouldn’t be pointing to the jre but to the jdk.
Set your JAVA_HOME
variable to /usr/lib/jvm/java-7-oracle
.
answered Jun 15, 2014 at 11:47
jobinjobin
26.7k16 gold badges99 silver badges116 bronze badges
1
This is the problem with the gradle which is appending /bin/java JAVACMD="$JAVA_HOME/bin/java"
to your JAVA_HOME path in its scripts.
so go to your gradle-3.3/bin
location of your gradle scripts and edit the gradle file using gedit.
if [ -n "$JAVA_HOME" ] ; then
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
# IBM's JDK on AIX uses strange locations for the executables
JAVACMD="$JAVA_HOME/jre/sh/java"
else
JAVACMD="$JAVA_HOME/bin/java"
fi
if [ ! -x "$JAVACMD" ] ; then
die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
this is the code snippet which is appending the java path hence results in an invalid path since you have already included /bin/java in your JAVA_HOME. so either change it here or remove the /bin/java from your JAVA_HOME path variable from the /etc/environment.
I have removed the /bin/java from the JAVA_HOME path and it worked fine for me.
answered Dec 18, 2017 at 6:31
Вопрос:
При попытке запустить 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
Кроме того, я проверил, что нет двух повторяющихся определений JAVA_HOME в .bash_profile
или /etc/profile
.
Итак, мой вопрос в том, как/почему Gradle найти /usr/lib/jvm/default-java
, и что еще более важно, как я могу указать его на правильный каталог?
Другие программы, требующие JDK, работают нормально, поэтому я думаю, что это проблема Gradle. Я также попытался переустановить Gradle, который не имел никакого значения.
Я запускаю 64-битный Xubuntu (база Ubuntu 13.10)
Лучший ответ:
Оказывается, что конкретный двоичный файл Gradle, загруженный из репозитория Ubuntu 13.10, пытается экспортировать JAVA_HOME. Спасибо Lucas за это.
/usr/bin/gradle
строка 70:
export JAVA_HOME=/usr/lib/jvm/default-java
Комментируя эту строку, решает проблему, а Gradle находит правильный путь к двоичному файлу Java.
Если вы просто загрузите двоичный файл из своего сайта, у него нет этой проблемы,
Это проблема с версией репо Ubuntu. Также есть некоторые проблемы с версией 13.10.
Ответ №1
добавить символическую ссылку
sudo ln -s /usr/lib/jvm/java-7-oracle /usr/lib/jvm/default-java
Ответ №2
Решение состоит в том, чтобы сделать 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) )))
Ответ №3
Для меня эта ошибка вызвана причиной Gradle, установленной как sudo, и я пытался запускать как пользователь по умолчанию Gradle.
Try:
sudo gradle -version
или
sudo gradle -v
Ответ №4
Попробуйте установить последнюю версию gradle
,
sudo add-apt-repository ppa:cwchien/gradle
sudo apt-get update
sudo apt-get install gradle
Если мы установим из ubuntu repo, он установит старую версию (для меня это было gradle 1.4). В старой версии он устанавливает java home из gradle как export JAVA_HOME=/usr/lib/jvm/default-java
. У последней версии этой проблемы нет.
Ответ №5
Вы export
твой JAVA_HOME
? Без экспорта настройка не будет распространяться на команды, запущенные внутри этой оболочки. Кроме того, java -version
не использует JAVA_HOME
, а использует первый java
, найденный в вашем пути. Убедитесь, что ваш .bashrc
выглядит примерно так:
JAVA_HOME=/path/to/java/home
export JAVA_HOME
Ответ №6
У меня была та же проблема, но я не нашел команду export в строке 70 в файле gradle для последней версии 2.13, но я понимаю глупую ошибку там, которая следует за
Если вы не найдете строку 70 с командой export в файле gradle в папке 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
, а она в пути → > вместо этого 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
.
Это произошло в моем случае.
Ответ №7
Мне пришлось столкнуться с этой проблемой, когда я запустил следующую команду в 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
Наконец, вы можете запустить команду сборки.
Ответ №8
Для меня была явная установка в разделе аргументов конфигурации внешних инструментов в Eclipse.
Ответ №9
Вы также можете перейти в папку bin внутри папки установки gradle и исправить параметр JAVA_HOME в файле gradle.bat.
В моем случае мой JAVA_HOME был установлен в c:Program filesjavabin
JAVA_HOME в gradle.bat был установлен в% JAVA_HOME%binjava.exe.
Я исправил JAVA_HOME в gradle.bat, и он сработал.
Спасибо!!!
Ответ №10
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.
Ответ №11
У меня тоже была проблема с этим. Он сказал неправильный каталог, когда он был прав. Поэтому я просто создал локальную переменную с именем JAVA_HOME, исключающим final/bin/java. Это сработало для меня.
Ответ №12
В моем dockercontainer (минимальная проблема не найти java) была, что “which” не был установлен. Компиляция проекта с использованием gradlew, который в. /gradlew для поиска java
Установка, которая решила проблему.
Ответ №13
Если ваша среда GRADLE_HOME и JAVA_HOME установлены правильно, проверьте каталог JDK и убедитесь, что у вас есть файл java.exe по указанному ниже пути.
C:Program Files (x86)Javajdk1.8.0_181bin
Как ошибка упоминается в файле 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 из моей директории.)
Ответ №14
[Windows] Как уже говорилось, похоже, что .bat -file пытается найти java.exe из %JAVA_HOME%/bin/java.exe
поэтому он не находит его, так как bin
повторяется дважды в пути. Извлеките этот дополнительный /bin
из gradle.bat.
Ответ №15
Перед запуском команды попробуйте ввести:
export JAVA_HOME="path_to_java_home"
Где path_to_java_home
– это папка, в которой находится ваш bin/java
.
Если Java установлен правильно, вы можете найти его местоположение, используя команду:
readlink -f $(which java)
Не забудьте удалить bin/java
в конце пути, поместив его в JAVA_HOME
Ответ №16
В моем 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
путь: /usr/lib/jvm/java-8-openjdk-amd64/bin/java
исключить bin/java
ваш JAVA_HOME = /usr/lib/jvm/java-8-openjdk-amd64