尽管 JAVA_HOME 设置正确,Gradle 仍发现错误
- 2024-10-18 09:00:00
- admin 原创
- 75
问题描述:
当我尝试运行 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
此外,我还检查过或中没有重复的 JAVA_HOME 定义/etc/profile
。
所以我的问题是 Gradle 如何/为什么找到/usr/lib/jvm/default-java
,更重要的是如何将它指向正确的目录?
其他需要 JDK 的程序运行良好,所以我认为这是 Gradle 的问题。我也尝试过重新安装 Gradle,但没有任何效果。
我正在运行 64 位 Xubuntu(Ubuntu 13.10 基础)
解决方案 1:
事实证明,我从 Ubuntu 13.10 存储库下载的特定 Gradle 二进制文件本身尝试导出 JAVA_HOME。感谢Lucas提出此建议。
/usr/bin/gradle
第 70 行:
export JAVA_HOME=/usr/lib/jvm/default-java
注释掉此行可以解决问题,Gradle 会找到 Java 二进制文件的正确路径。
如果您只是从他们的网站下载二进制文件,则不会出现此问题,这是 Ubuntu repo 版本的问题。13.10版本似乎还存在其他一些问题。
解决方案 2:
添加符号链接
sudo ln -s /usr/lib/jvm/java-7-oracle /usr/lib/jvm/default-java
解决方案 3:
解决方案是使 JAVA_HOME == 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) )))
解决方案 4:
对于我来说,出现此错误是由于Gradle安装为sudo而我尝试以默认用户身份运行 Gradle。
尝试:
sudo gradle -version
或者
sudo gradle -v
解决方案 5:
在我的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
解决方案 6:
您是否export
设置了JAVA_HOME
?如果没有导出,设置将不会传播到该 shell 内启动的命令。此外,java -version
不使用JAVA_HOME
,而是使用java
在路径中找到的第一个。确保您的.bashrc
看起来像这样:
JAVA_HOME=/path/to/java/home
export JAVA_HOME
解决方案 7:
尝试安装最新版本的gradle
,
sudo add-apt-repository ppa:cwchien/gradle
sudo apt-get update
sudo apt-get install gradle
如果我们从 ubuntu repo 安装,它将安装旧版本(对我来说是 gradle 1.4)。在旧版本中,它将 gradle 中的 java home 设置为export JAVA_HOME=/usr/lib/jvm/default-java
。最新版本没有这个问题。
解决方案 8:
我遇到了同样的问题,但是在最新版本 2.13 的 gradle 文件的第 70 行中没有找到导出命令,但我知道那里有一个愚蠢的错误,如下所示,
如果你在 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-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
路径中减去。
我的情况就是这样的。
解决方案 9:
我在 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
最后,您可以运行构建命令。
解决方案 10:
我已经在 Manjaro Linux 上测试过了。应该也适用于其他 Disto。
您需要包含整个 java-jdk 目录,而不仅仅是 java 环境变量的 java/bin。
例如,而不是:
export JAVA_HOME=/opt/jdk-14.0.2/bin
#根据你的jdk位置更改路径PATH=$PATH:$JAVA_HOME
使用这个:
export JAVA_HOME=/opt/jdk-14.0.2/
#根据你的jdk位置更改路径PATH=$PATH:$JAVA_HOME
然后运行 gradle 命令它就会工作。
解决方案 11:
您还可以转到 gradle 安装文件夹内的 bin 文件夹并更正 gradle.bat 文件中的 JAVA_HOME 参数。 在我的情况下,我的 JAVA_HOME 设置为 c:\Program files\java\bin gradle.bat 中的 JAVA_HOME 设置为 %JAVA_HOME%\bin\java.exe。
我修正了 gradle.bat 中的 JAVA_HOME 并且它起作用了。
谢谢你!!!
解决方案 12:
在运行命令之前尝试输入:
export JAVA_HOME="path_to_java_home"
path_to_java_home
您的文件夹在哪里bin/java
。
如果 java 已正确安装,您可以使用以下命令找到它的位置:
readlink -f $(which java)
bin/java
放入时不要忘记从路径末尾移除JAVA_HOME
解决方案 13:
对我来说,Eclipse 中外部工具配置的参数部分的明确设置是一个问题。
解决方案 14:
sudo ln -s /usr/lib/jvm/java-7-oracle/jre /usr/lib/jvm/default-java
创建到 default-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.
解决方案 15:
我也遇到过这个问题。它显示目录错误,但其实目录是正确的。所以我只创建了一个名为 JAVA_HOME 的局部变量,省略了最后的 /bin/java。对我来说,它工作得很好。
解决方案 16:
如果您的 GRADLE_HOME 和 JAVA_HOME 环境设置正确,请检查您的 JDK 目录并确保以下路径下有java.exe文件。
C:Program Files (x86)Javajdk1.8.0_181in
正如 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_HOME%/bin
如果一切正确,则
这对我有用(我的帐户被客户端禁用并且他们的管理员已从我的目录中删除了 java.exe。)
解决方案 17:
[Windows] 如上所述,.bat 文件似乎试图从中查找 java.exe,但由于路径中重复了两次,%JAVA_HOME%/bin/java.exe
因此找不到它。从 gradle.bat 中删除该多余内容。bin
`/bin`
解决方案 18:
在我的dockercontainer中(问题很小,找不到java),没有安装“which”。使用gradlew编译项目,在./gradlew中使用which来查找java,安装which解决了问题。
解决方案 19:
在 build.gradle 中添加以下几行解决了我的问题。
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
解决方案 20:
ISSUE: GradleException:javaConfig.targetVersion 是 Java 8,但环境变量 JAVA8_HOME 不存在
我认为这是您在 IntelliJ 中修复它的方法。我遇到过几次这种情况,因为我为新项目选择“在新窗口中打开”,但我还没有写下步骤。1.文件 -> 项目结构。项目设置/项目。确保项目 SDK 和项目语言级别正确。2.首选项。构建、执行、部署/构建工具/Gradle。确保 Gradle JVM 正确。此后,您可能必须重新启动 IntelliJ。
现在问题解决了
任务:prepareKotlinBuildScriptModel 最新
此版本中使用了已弃用的 Gradle 功能,因此与 Gradle 8.0 不兼容。
您可以使用“--warning-mode all”来显示各个弃用警告并确定它们是否来自您自己的脚本或插件。
请参阅https://docs.gradle.org/7.3.3/userguide/command_line_interface.html#sec:command_line_warnings
22 秒内成功建造
- 2024年20款好用的项目管理软件推荐,项目管理提效的20个工具和技巧
- 2024年开源项目管理软件有哪些?推荐5款好用的项目管理工具
- 项目管理软件有哪些?推荐7款超好用的项目管理工具
- 项目管理软件哪个最好用?盘点推荐5款好用的项目管理工具
- 项目管理软件有哪些最好用?推荐6款好用的项目管理工具
- 项目管理软件有哪些,盘点推荐国内外超好用的7款项目管理工具
- 2024项目管理软件排行榜(10类常用的项目管理工具全推荐)
- 项目管理软件排行榜:2024年项目经理必备5款开源项目管理软件汇总
- 2024年常用的项目管理软件有哪些?推荐这10款国内外好用的项目管理工具
- 项目管理必备:盘点2024年13款好用的项目管理软件