Gradle发现错误的JAVA_HOME,即使它已正确设置

问题

尝试运行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中定义,我已经仔细检查过它是否被设置为源。

Runningjava -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/javasymlinks到/etc/alternatives/java,然后正确的符号链接到/usr/lib/jvm/java-7-oracle/jre/bin/java

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

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

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

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


#1 热门回答(241 赞)

原来我从Ubuntu 13.10 repositoryitselftries下载的特定Gradle二进制文件导出JAVA_HOME。感谢Lucas提出这个建议。

/usr/bin/gradleline 70:

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

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

如果你只是从他们的website下载二进制文件没有这个问题,那就是Ubuntu repo版本的问题.There also seem to be some other issues with 13.10 version.


#2 热门回答(45 赞)

添加符号链接

sudo ln -s /usr/lib/jvm/java-7-oracle /usr/lib/jvm/default-java

#3 热门回答(11 赞)

对我来说这个错误是由于Gradle安装为sudo而我试图作为默认用户运行Gradle。

尝试:

sudo gradle -version

要么

sudo gradle -v