尽管 JAVA_HOME 设置正确,Gradle 仍发现错误

2024-10-18 09:00:00
admin
原创
221
摘要:问题描述:当我尝试运行 gradle 时,出现以下错误:# gradle ERROR: JAVA_HOME is set to an invalid directory: /usr/lib/jvm/default-java Please set the JAVA_HOME variable in your...

问题描述:

当我尝试运行 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`

Gradle

解决方案 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 秒内成功建造


相关推荐
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   1259  
  IPD(Integrated Product Development)流程管理作为一种先进的产品开发管理理念和方法,在提升企业创新能力方面发挥着至关重要的作用。它打破了传统产品开发过程中部门之间的壁垒,通过整合资源、优化流程,实现产品的快速、高效开发,为企业在激烈的市场竞争中赢得优势。IPD流程管理的核心概念IPD流程...
IPD流程中PDCP是什么意思   11  
  IPD(Integrated Product Development)流程管理作为一种先进的产品开发管理模式,旨在通过整合各种资源,实现产品的高效、高质量开发。在这一过程中,团队协作无疑是成功的关键。有效的团队协作能够打破部门壁垒,促进信息共享,提升决策效率,从而确保产品开发项目顺利推进。接下来,我们将深入探讨IPD流...
IPD培训课程   9  
  IPD(Integrated Product Development)研发管理体系作为一种先进的产品开发理念和方法,在众多企业中得到了广泛应用。它旨在打破部门壁垒,整合资源,实现产品开发的高效、协同与创新。在项目周期方面,IPD研发管理体系有着深远且多维度的影响,深入剖析这些影响,对于企业优化产品开发流程、提升市场竞争...
华为IPD流程   11  
  IPD(Integrated Product Development)流程管理是一种先进的产品开发管理模式,旨在通过整合企业的各种资源,实现产品的高效、高质量开发。它涵盖了从产品概念提出到产品退市的整个生命周期,对企业的发展具有至关重要的意义。接下来将详细阐述IPD流程管理的五个阶段及其重要性。概念阶段概念阶段是IPD...
IPD概念阶段   12  
热门文章
项目管理软件有哪些?
云禅道AD
禅道项目管理软件

云端的项目管理软件

尊享禅道项目软件收费版功能

无需维护,随时随地协同办公

内置subversion和git源码管理

每天备份,随时转为私有部署

免费试用