Jam*_*ett 159 java linux environment-variables gradle
尝试运行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.
Run Code Online (Sandbox Code Playgroud)
但是,当我检查JAVA_HOME变量时,我得到:
# echo $JAVA_HOME
/usr/lib/jvm/java-7-oracle
Run Code Online (Sandbox Code Playgroud)
我的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)
Run Code Online (Sandbox Code Playgroud)
我还检查了/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基础)
Jam*_*ett 258
事实证明,我从Ubuntu 13.10存储库本身下载的特定Gradle二进制文件试图导出JAVA_HOME.感谢卢卡斯的建议.
/usr/bin/gradle 第70行:
export JAVA_HOME=/usr/lib/jvm/default-java
Run Code Online (Sandbox Code Playgroud)
注释掉这一行解决了这个问题,Gradle找到了Java二进制文件的正确路径.
如果你只是从他们的网站下载二进制文件它没有这个问题,这是Ubuntu repo版本的一个问题.13.10版本似乎还有其他一些问题.
Sha*_*shi 48
添加符号链接
sudo ln -s /usr/lib/jvm/java-7-oracle /usr/lib/jvm/default-java
Run Code Online (Sandbox Code Playgroud)
Sco*_*and 21
解决方案是让JAVA_HOME == dir在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
Run Code Online (Sandbox Code Playgroud)
好的,所以终于在实际的javac上面找到了bin,所以这样做
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
export PATH=$JAVA_HOME/bin:$PATH
Run Code Online (Sandbox Code Playgroud)
以上可以简化并推广到
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) )))
Run Code Online (Sandbox Code Playgroud)
Jyo*_*ash 12
对我来说,这个错误是由于Gradle安装为sudo而我尝试作为默认用户运行Gradle的原因.
尝试:
sudo gradle -version
Run Code Online (Sandbox Code Playgroud)
要么
sudo gradle -v
Run Code Online (Sandbox Code Playgroud)
尝试安装最新版本gradle,
sudo add-apt-repository ppa:cwchien/gradle
sudo apt-get update
sudo apt-get install gradle
Run Code Online (Sandbox Code Playgroud)
如果我们从ubuntu repo安装,它将安装旧版本,(对我而言,它是gradle 1.4).在旧版本中,它将java home从gradle设置为export JAVA_HOME=/usr/lib/jvm/default-java.最新版本没有这个问题.
你export的JAVA_HOME吗?如果没有导出,设置将不会传播到在该 shell 内启动的命令。此外,java -version不使用JAVA_HOME,而是使用java在您的路径中找到的第一个。确保你.bashrc看起来像这样:
JAVA_HOME=/path/to/java/home
export JAVA_HOME
Run Code Online (Sandbox Code Playgroud)
在我的 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
Run Code Online (Sandbox Code Playgroud)
步骤 2. 记下路径:
/usr/lib/jvm/java-8-openjdk-amd64/bin/java
排除 bin/java
你的 JAVA_HOME = /usr/lib/jvm/java-8-openjdk-amd64
小智 5
当我在 Ubuntu 上运行以下命令时遇到了这个问题:
ionic build android
Run Code Online (Sandbox Code Playgroud)
为了解决这个问题,我执行了以下步骤:
ln -sf /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java /usr/lib/jvm/default-java
Run Code Online (Sandbox Code Playgroud)
将 JAVA_HOME 添加到 /etc/environment:
vi /etc/environment
Run Code Online (Sandbox Code Playgroud)
添加:
JAVA_HOME="/usr/lib/jvm/default-java"
Run Code Online (Sandbox Code Playgroud)
保存后,阅读:
source /etc/environment
Run Code Online (Sandbox Code Playgroud)
最后,您可以运行构建命令。
小智 5
我遇到了同样的问题,但是我没有在最新版本 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 行,
Run Code Online (Sandbox Code Playgroud)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路径中减去它。
我的情况就是这样。
| 归档时间: |
|
| 查看次数: |
125148 次 |
| 最近记录: |