gradle设置java home,即使设置正确,Gradle也会find错误的JAVA_HOME

即使设置正确,Gradle也会find错误的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_HOMEvariables时,我得到:

# 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或/etc/profile中没有重复的JAVA_HOME定义。

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

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

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

事实certificate,从Ubuntu 13.10存储库本身下载的特定的Gradle二进制文件尝试导出JAVA_HOME。 感谢卢卡斯提出这个build议。

/usr/bin/gradle第70行:

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

评论这条线解决了这个问题,Gradlefind了Java二进制文件的正确path。

如果你只是从他们的网站下载二进制文件,它没有这个问题,这是Ubuntu的回购版本的问题。 13.10版似乎也有其他一些问题。

添加一个符号链接

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

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

尝试:

sudo gradle -version

要么

sudo gradle -v

你有export你的JAVA_HOME吗? 如果没有导出,该设置将不会被传播到在该shell中启动的命令。 此外, java -version不使用JAVA_HOME ,而是使用在path中find的第一个java 。 确保你的.bashrc看起来像这样:

JAVA_HOME=/path/to/java/home export JAVA_HOME

我有同样的问题,但我没有find最新版本2.13 gradle文件中的70行输出命令,但我明白了一个愚蠢的错误,那就是,

如果在你的gradle文件夹/ bin /中没有find第70行的gradle文件中的export命令,那么检查你的〜/ .bashrc,如果你findexport JAVA_HOME==/usr/lib/jvm/java-7-openjdk-amd64/bin/java ,然后从这行删除/bin/java ,比如JAVA_HOME==/usr/lib/jvm/java-7-openjdk-amd64 ,并且在path>>>而不是这个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_HOMEpath中减去。

这发生在我的情况。

对于我来说,在Eclipse中的外部工具configuration的参数部分显式设置是问题。

0UByl.png

您也可以转到您的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,它的工作。

谢谢!!!

我在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

最后,你可以运行build命令。

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

创build一个到default-java目录的符号链接。

你可以通过find你的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.

解决方法是使javac所在的bin中的JAVA_HOME == dir

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

好吧,所以终于find真正的javac上面的垃圾箱所以这样做

export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64 export PATH=$JAVA_HOME/bin:$PATH

我也有这个问题。 它说错了目录,当它是正确的。 所以我刚创build了一个名为JAVA_HOME的局部variables,省略了最后的/ bin / java。 它为我工作得很好。

在我的dockercontainer(最小的问题是找不到java)的时候,那个“哪个”没有安装。 使用gradlew编译项目,在./gradlew中findjava安装解决了这个问题。

尝试安装最新版本的gradle ,

sudo add-apt-repository ppa:cwchien/gradle sudo apt-get update sudo apt-get install gradle

如果我们安装从Ubuntu的回购,它会安装旧版本,(对我来说,它是gradle 1.4)。 在较旧的版本中,它将来自gradle的java home设置为export JAVA_HOME=/usr/lib/jvm/default-java 。 最新版本没有这个问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值