即使设置正确,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_HOME
path中减去。
这发生在我的情况。
对于我来说,在Eclipse中的外部工具configuration的参数部分显式设置是问题。
您也可以转到您的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
。 最新版本没有这个问题。
- 如何解决java.util.zip.ZipException?
- 在Intellij IDEA 2016.1.1的控制台中显示Gradle输出
- Android Studio更新后,Gradle项目刷新失败
- Gradle,“sourceCompatibility”vs“targetCompatibility”?
- Gradle没有findtools.jar
- 通过Gradle和Android Studio构build和运行应用程序比通过Eclipse慢
- Android Gradle无法为对象堆预留足够的空间
- 了解gradle任务定义中的groovy语法
- 如何导入Android项目作为库,而不是编译为apk(Android工作室1.0)