尽管 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...

问题描述:

当我尝试运行 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 秒内成功建造


相关推荐
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   601  
  华为IPD与传统研发模式的8大差异在快速变化的商业环境中,产品研发模式的选择直接决定了企业的市场响应速度和竞争力。华为作为全球领先的通信技术解决方案供应商,其成功在很大程度上得益于对产品研发模式的持续创新。华为引入并深度定制的集成产品开发(IPD)体系,相较于传统的研发模式,展现出了显著的差异和优势。本文将详细探讨华为...
IPD流程是谁发明的   7  
  如何通过IPD流程缩短产品上市时间?在快速变化的市场环境中,产品上市时间成为企业竞争力的关键因素之一。集成产品开发(IPD, Integrated Product Development)作为一种先进的产品研发管理方法,通过其结构化的流程设计和跨部门协作机制,显著缩短了产品上市时间,提高了市场响应速度。本文将深入探讨如...
华为IPD流程   9  
  在项目管理领域,IPD(Integrated Product Development,集成产品开发)流程图是连接创意、设计与市场成功的桥梁。它不仅是一个视觉工具,更是一种战略思维方式的体现,帮助团队高效协同,确保产品按时、按质、按量推向市场。尽管IPD流程图可能初看之下显得错综复杂,但只需掌握几个关键点,你便能轻松驾驭...
IPD开发流程管理   8  
  在项目管理领域,集成产品开发(IPD)流程被视为提升产品上市速度、增强团队协作与创新能力的重要工具。然而,尽管IPD流程拥有诸多优势,其实施过程中仍可能遭遇多种挑战,导致项目失败。本文旨在深入探讨八个常见的IPD流程失败原因,并提出相应的解决方法,以帮助项目管理者规避风险,确保项目成功。缺乏明确的项目目标与战略对齐IP...
IPD流程图   8  
热门文章
项目管理软件有哪些?
云禅道AD
禅道项目管理软件

云端的项目管理软件

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

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

内置subversion和git源码管理

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

免费试用