当我启动Hadoop时出现“Error:Could find or load main class”
我想在Windows 7机器上运行Hadoop(2.2.0)(是的,我知道在Linux上运行它会更好,但目前这不是一种选择)。 我遵循指示张贴在http://ebiquity.umbc.edu/Tutorials/Hadoop/14%20-%20start%20up%20the%20cluster.html和http://blog.sqltrainer.com/2012/01/installing-and-configuring-apache.html当我启动Hadoop时出现“Error:Could find or load main class”
Evetyhing一直很好,直到我试图启动Hadoop。我尝试运行的每个操作都会完成:Error: Could not find or load main class ...
错误。
例如,运行
./hadoop version
结束了
Error: Could not find or load main class org.apache.hadoop.util.VersionInfo
它肯定看起来像类路径的问题。但是,我不知道如何解决它。我尝试设置不同的环境变量,例如$ HADOOP_COMMON_HOME或$ HADOOP_HOME,但没有运气。
任何想法?
当您通常收到此错误消息时,无论是使用错误的Java版本还是使用较旧的Java版本编译该程序。
您可以通过打开cmd(命令提示符)并输入java -version
来检查您的版本。
我正在运行java 1.7.0_21 – Jakub
添加此行到〜/ .bash_profile为我工作:
export HADOOP_PREFIX=/where_ever_you_install_hadoop/hadoop
仅供参考,我也有同样的回答这个帖子:Could not find or load main class org.apache.hadoop.util.VersionInfo
我也一直在试图让Windows 7的了并使用Hadoop运行。对我来说,这个问题是Hadoop是在Cygwin中通过格式CLASSPATH
CLASSPATH=/cygdrive/c/foo:/cygdrive/c/bar
然而,Java预计CLASSPATH在Windows格式
CLASSPATH=c:\foo;c:\bar
看着Hadoop的0.19.1给我看他们是如何处理这一点。 您可以插入下面的语句为bin/hadoop
,之前它在最后调用Java语言(重复其他Java的调用sh脚本)
cygwin=false
case "`uname`" in
CYGWIN*) cygwin=true;;
esac
if $cygwin; then
echo Cygwin
CLASSPATH=`cygpath -p -w "$CLASSPATH"`
HADOOP_HOME=`cygpath -d "$HADOOP_HOME"`
HADOOP_LOG_DIR=`cygpath -d "$HADOOP_LOG_DIR"`
TOOL_PATH=`cygpath -p -w "$TOOL_PATH"`
fi
export CLASSPATH=$CLASSPATH
echo $CLASSPATH
exec "$JAVA" $JAVA_HEAP_MAX $HADOOP_OPTS $CLASS "[email protected]"
我曾面临这个问题我自己。这是为我解决了这个问题。
以下内容添加到〜/ .bashrc文件:
export HADOOP_CLASSPATH=$(cygpath -pw $(hadoop classpath)):$HADOOP_CLASSPATH
注意:您可以直接在Windows上安装Hadoop2.2 +。你不需要Cygwin。
您在运行程序之前是否使用HADOOP_CLASSPATH。 'export HADOOP_CLASSPATH =/path/to/your/hadoop/lib' 尝试使用这一次。 – achyut
是的,已经这样做了,它没有帮助。 – Jakub
我在VM中遇到了与Ubuntu相同的错误。 – vdolez