使用java_home环境变量确定问题的根源

时间:2013-04-26 23:30:13

标签: linux bash ubuntu hadoop amazon-ec2

我正在尝试在最新版本的ubuntu 64bit(vm)中运行这样的hadoop集群:

hadoop launch-cluster MyCluster 1

这是我得到的输出:

/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

我在 / usr / bin / hadoop 中设置此 JAVA_HOME export JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:bin/java::")

当我检查 JAVA_HOME 的值时,我得到 / usr / lib / jvm / java-7-openjdk-amd64 / jre /

文件的第320行是:

JAVA_PLATFORM=`CLASSPATH=${CLASSPATH} ${JAVA} -Xmx32m ${HADOOP_JAVA_PLATFORM_OPTS} org.apache.hadoop.util.PlatformName | sed -e "s/ /_/g"`

和第390行:

exec "$JAVA" -Dproc_$COMMAND $JAVA_HEAP_MAX $HADOOP_OPTS -classpath "$CLASSPATH" $CLASS "$@"

为什么我收到此消息? / usr / lib / jvm / java-6-sun / bin / java:没有这样的文件或目录

1 个答案:

答案 0 :(得分:2)

$JAVA的值可能在脚本中的某处设置为指向较旧的Java 6二进制文件。在这种情况下,它指向/usr/lib/jvm/java-6-sun/bin/java,这会导致shell在运行命令时失败。将$JAVA变量设置为指向Java 7二进制文件的正确位置,问题应该解决。