日期:2014-05-16  浏览次数:20889 次

解决Window环境下启动Hadoop时出现的 java.lang.NoClassDefFoundError: org/apache/hadoop/util/P

在Window下启动Hadoop-0.21.0版本时,会出现下面这样的错误提示:

?1 ?java.lang.NoClassDefFoundError:?org / apache / hadoop / util / PlatformName
?2 ?Caused?by:?java.lang.ClassNotFoundException:?org.apache.hadoop.util.PlatformName
?3 ?
?4 ?????????at?java.net.URLClassLoader$ 1 .run(URLClassLoader.java: 202 )
?5 ?????????at?java.security.AccessController.doPrivileged(Native?Method)
?6 ?????????at?java.net.URLClassLoader.findClass(URLClassLoader.java: 190 )
?7 ?????????at?java.lang.ClassLoader.loadClass(ClassLoader.java: 307 )
?8 ?????????at?sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java: 301 )
?9 ?????????at?java.lang.ClassLoader.loadClass(ClassLoader.java: 248 )
10 ?Could?not?find?the?main? class :?org.apache.hadoop.util.PlatformName.??Program?wil
11 ?l?exit.


经过不断的查找原因和尝试,终于有了解决这个错误的办法,只需要将${HADOOP_HOME}/bin/hadoop-config.sh文件中的第190行的一下的内容

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



修改成以下的内容即可

JAVA_PLATFORM = `CLASSPATH = ${CLASSPATH}?${JAVA}?