Gradle发现了错误的JAVA#u主页,即使它是';设置正确吗
尝试运行gradle时,出现以下错误:Gradle发现了错误的JAVA#u主页,即使它是';设置正确吗,java,linux,gradle,environment-variables,Java,Linux,Gradle,Environment Variables,尝试运行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_HO
# 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_主页是在.bashrc中定义的,我仔细检查了它是否被设置为源代码
运行java-version
还可以确认java\u HOME设置正确,并且在路径上
# 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/alternations/java
的符号链接,这些符号链接正确地指向/usr/lib/jvm/java-7-oracle/jre/bin/java
此外,我还检查了.bash\u profile
或/etc/profile
中没有重复的JAVA\u HOME定义
所以我的问题是Gradle如何/为什么找到/usr/lib/jvm/default java
,更重要的是我如何将它指向正确的目录
其他需要JDK的程序运行良好,因此我认为这是一个渐变问题。我也尝试过重新安装Gradle,但没有什么不同
我正在运行64位的Xubuntu(Ubuntu13.10Base)您是否
导出了您的JAVA\u主页
?如果没有导出,设置将不会传播到该shell内部启动的命令。另外,java-version
不使用java\u HOME
,而是使用路径中找到的第一个java
。确保您的.bashrc
如下所示:
JAVA_HOME=/path/to/java/home
export JAVA_HOME
事实证明,我从Ubuntu13.10存储库下载的特定Gradle二进制文件本身试图将JAVA_导出到主页。谢谢你的建议
/usr/bin/gradle
第70行:
export JAVA_HOME=/usr/lib/jvm/default-java
注释这一行解决了问题,Gradle找到了Java二进制文件的正确路径
如果你只是从他们的网站上下载二进制文件,它就不会有这个问题,
这是Ubuntu repo版本的一个问题 添加符号链接
sudo ln -s /usr/lib/jvm/java-7-oracle /usr/lib/jvm/default-java
对我来说,这个错误是由于Gradle安装为sudo的原因造成的,我正试图作为默认用户运行Gradle
尝试:
或
对我来说,Eclipse中外部工具配置的arguments部分的显式设置是问题所在
我对此也有问题。当它是正确的时候,它说的是错误的目录。所以我刚刚创建了一个名为JAVA_HOME的局部变量,省略了final/bin/JAVA。这对我来说很好。您也可以转到gradle安装文件夹中的bin文件夹,并更正gradle.bat文件中的JAVA_HOME参数。
在我的例子中,我的JAVA\u主页被设置为c:\Program files\JAVA\bin
gradle.bat中的JAVA_HOME设置为%JAVA_HOME%\bin\JAVA.exe
我在gradle.bat中更正了JAVA_主页,它成功了
谢谢你 我在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
加:
保存后,请阅读:
source /etc/environment
最后,您可以运行build命令
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.13的gradle文件的第70行中,我没有找到export命令,但我理解其中存在一个愚蠢的错误,即:
如果在gradle文件夹/bin/中的gradle文件中找不到带有export命令的第70行,请检查~/.bashrc,如果找到export JAVA_HOME==/usr/lib/jvm/JAVA-7-openjdk-amd64/bin/JAVA
,然后从此行中删除/bin/JAVA
,如JAVA_HOME=/usr/lib/jvm/JAVA-7-openjd64
,它在路径>>>中,而不是这个导出路径=$path:$HOME/bin:JAVA\u HOME/
,它将是导出路径=$path:$HOME/bin:JAVA\u HOME/bin/JAVA
。然后运行source~/.bashrc
原因是,如果检查gradle文件,您将在第70行(如果没有导出命令)或第75行中找到
这意味着/bin/java
已经存在,因此需要从java\u HOME
路径中减去它
在我的dockercontainer中(没有找到java的问题很小),没有安装“which”。使用gradlew链接项目,在./gradlew中使用它来查找java
安装解决了问题。尝试安装最新版本的gradle
sudo add-apt-repository ppa:cwchien/gradle
sudo apt-get update
sudo apt-get install gradle
如果我们从ubunturepo安装,它将安装旧版本(对我来说是gradle1.4)。在旧版本中,它将gradle中的java home设置为导出java_home=/usr/lib/jvm/default java
。最新版本没有这个问题。解决方案是使JAVA_HOME==dir位于javac所在的bin之上,如中所示
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上面找到了bin,那么就这样做吧
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) )))
如果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\u HOME%/bin
下,如果一切正常
这对我来说是可行的(我的帐户被客户端禁用,他们的管理员从我的目录中删除了java.exe)。[Windows]如前所述,它看起来像.bat-文件试图从%java\u HOME%/bin/java.exe
中查找java.exe,所以它找不到它,因为bin
在路径中重复了两次。
从gradle.bat中删除额外的/bin
在运行命令之前,请尝试输入:
export JAVA_HOME="path_to_java_home"
其中path\u to\u java\u home
是您的bin/java
所在的文件夹
如果java安装正确,您可以使用以下命令找到它的位置:
readlink -f $(which java)
在我的Ubuntu中,当把它放到java\u HOME
中时,不要忘了从路径的末尾删除bin/java
,我为此头疼了两天
圣
C:\Program Files (x86)\Java\jdk1.8.0_181\bin
: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.
export JAVA_HOME="path_to_java_home"
readlink -f $(which 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
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8