java - 即使设置正确,Gradle 也会发现错误的 JAVA_HOME

标签 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_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 符号链接(symbolic link)到 /etc/alternatives/java 进而正确符号链接(symbolic link)到 /usr/lib/jvm/java-7-oracle/jre/bin/java

另外,我检查了 .bash_profile/etc/profile 中没有重复的 JAVA_HOME 定义。

所以我的问题是 Gradle 如何/为什么找到 /usr/lib/jvm/default-java,更重要的是我如何将它指向正确的目录?

其他需要 JDK 的程序可以正常工作,所以我认为这是 Gradle 问题。我也尝试过重新安装 Gradle,但没有任何区别。

我正在运行 64 位 Xubuntu(Ubuntu 13.10 基础版)

最佳答案

原来我从 Ubuntu 13.10 存储库下载的特定 Gradle 二进制文件本身试图导出 JAVA_HOME。感谢 Lucas建议这样做。

/usr/bin/gradle 第 70 行:

export JAVA_HOME=/usr/lib/jvm/default-java

注释掉这一行可以解决问题,Gradle 会找到 Java 二进制文件的正确路径。

如果您只是从他们的website 下载二进制文件它没有这个问题, 这是 Ubuntu 存储库版本的问题。 There also seem to be some other issues with 13.10 version.

关于java - 即使设置正确,Gradle 也会发现错误的 JAVA_HOME,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22307516/

相关文章:

linux - 是否可以覆盖您正在处理的文件?

依赖于失败的 Gradle 任务

java - 全局 gradle 代理设置?

java - 使用 Gradle 导出 jar 时出现 Firestore 依赖项问题

java - 共享属性时抽象类与接口(interface)

java - 用不包含在双引号中的逗号拆分字符串

Linux RTC 应用程序代码在 read() 处等待且当前年份显示不正确

java - ListFragment 中的加载器未重新加载(使用 ViewPager)

java - 在由 recyclerView 制作的图像 slider 中添加下一个、上一个按钮

linux - 在 shell -n 中回显没有打印正确的东西