我已经设置JAVA_HOME正确,当我echo它,我看到正确的值:
$ echo $JAVA_HOME
/usr/lib/jvm/java-6-openjdk-amd64/
Run Code Online (Sandbox Code Playgroud)
我还把JAVA_HOME值放在hadoop-env.sh上.
$ grep JAVA_HOME conf/hadoop-env.sh
# The only required environment variable is JAVA_HOME. All others are
# set JAVA_HOME in this file, so that it is correctly defined on
export JAVA_HOME="/usr/lib/jvm/java-6-openjdk-amd64/"
Run Code Online (Sandbox Code Playgroud)
尽管如此,hadoop仍然显示JAVA_HOME变量完全不同.我不知道它在哪里获得这个价值.有什么建议?
$ hadoop noname -format
Warning: $HADOOP_HOME is deprecated.
/usr/bin/hadoop: line 320: /usr/lib/jvm/java-6-sun/bin/java: No such file or directory
/usr/bin/hadoop: line 390: /usr/lib/jvm/java-6-sun/bin/java: No such file or directory
Run Code Online (Sandbox Code Playgroud)
小智 16
我的Hadoop安装也遇到了同样的问题.我发现/etc/hadoop/hadoop-env.shJAVA_HOME是硬编码的/usr/lib/jvm/java-6-sun.我继续前进并将其更改为${JAVA_HOME},这似乎可以解决问题.
我有“错误/usr/bin/java /bin/java 不存在”
在 ~/.bashrc 中,我将 JAVA_HOME 设置为/usr/bin/java. 我看到hadoop/etc/hadoop-config.sh它正在使用$JAVA_HOME/bin/java; 这解释了那个错误。只是,它没有修复它以删除 /bin/java。为了找到我的答案,我通过调查
cd /usr/bin/java
ls -al
Run Code Online (Sandbox Code Playgroud)
我看到了
lrwxrwxrwx 1 root root 46 Jul 22 16:01 /usr/bin/java -> /etc/alternatives/java
Run Code Online (Sandbox Code Playgroud)
我最注意到的是,在我的 bash 提示中,箭头的左侧是青色,而箭头的右侧是绿色。我认为这可能是一个符号链接。这次我再次这样做了ls -al(-al非常重要)符号链接位置(见下文),并注意到看起来像另一个符号链接。
root@groovy:~# ls /etc/alternatives/java -al
lrwxrwxrwx 1 root root 46 Jul 22 16:01 /etc/alternatives/java -> /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java
Run Code Online (Sandbox Code Playgroud)
我把箭头右边的那个值放在 ~/.bashrc 中
~/.bashrc
export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64/jre
export PATH=$PATH:$JAVA_HOME
Run Code Online (Sandbox Code Playgroud)
hadoop/etc/hadoop/hadoop-env.sh
export JAVA_HOME=${JAVA_HOME}
Run Code Online (Sandbox Code Playgroud)
hadoop/libexec/hadoop-config.sh
EXPORT JAVA_HOME=$JAVA_HOME/bin
Run Code Online (Sandbox Code Playgroud)
请注意,我通过以下方式安装了 JDK sudo apt-get install default-jdk
| 归档时间: |
|
| 查看次数: |
19847 次 |
| 最近记录: |