web-dev-qa-db-ja.com

スレッド「メイン」の例外Java.lang.NoClassDefFoundError:org / Apache / hadoop / util / PlatformName

この例外に関して多くの投稿があったことは知っていますが、この問題を修正することはできません。クラスパスは編集する必要があります。解決する必要があると思います。 HadoopインフラストラクチャでDistMapというプログラムを実行しようとしています。これは私が得ているエラーです。

Caused by: Java.lang.ClassNotFoundException: org.Apache.hadoop.util.PlatformName
        at Java.net.URLClassLoader$1.run(URLClassLoader.Java:202)
        at Java.security.AccessController.doPrivileged(Native Method)
        at Java.net.URLClassLoader.findClass(URLClassLoader.Java:190)
        at Java.lang.ClassLoader.loadClass(ClassLoader.Java:306)
        at Sun.misc.Launcher$AppClassLoader.loadClass(Launcher.Java:301)
        at Java.lang.ClassLoader.loadClass(ClassLoader.Java:247)
Could not find the main class: org.Apache.hadoop.util.PlatformName.  Program will exit.
Exception in thread "main" Java.lang.NoClassDefFoundError: org/Apache/hadoop/fs/FsShell
Caused by: Java.lang.ClassNotFoundException: org.Apache.hadoop.fs.FsShell
        at Java.net.URLClassLoader$1.run(URLClassLoader.Java:202)
        at Java.security.AccessController.doPrivileged(Native Method)
        at Java.net.URLClassLoader.findClass(URLClassLoader.Java:190)
        at Java.lang.ClassLoader.loadClass(ClassLoader.Java:306)
        at Sun.misc.Launcher$AppClassLoader.loadClass(Launcher.Java:301)
        at Java.lang.ClassLoader.loadClass(ClassLoader.Java:247)
Could not find the main class: org.Apache.hadoop.fs.FsShell.  Program will exit.
Exception in thread "main" Java.lang.NoClassDefFoundError: org/Apache/hadoop/util/PlatformName
Caused by: Java.lang.ClassNotFoundException: org.Apache.hadoop.util.PlatformName
        at Java.net.URLClassLoader$1.run(URLClassLoader.Java:202)
        at Java.security.AccessController.doPrivileged(Native Method)
        at Java.net.URLClassLoader.findClass(URLClassLoader.Java:190)
        at Java.lang.ClassLoader.loadClass(ClassLoader.Java:306)
        at Sun.misc.Launcher$AppClassLoader.loadClass(Launcher.Java:301)
        at Java.lang.ClassLoader.loadClass(ClassLoader.Java:247)
Could not find the main class: org.Apache.hadoop.util.PlatformName.  Program will exit.
Exception in thread "main" Java.lang.NoClassDefFoundError: org/Apache/hadoop/fs/FsShell
Caused by: Java.lang.ClassNotFoundException: org.Apache.hadoop.fs.FsShell
        at Java.net.URLClassLoader$1.run(URLClassLoader.Java:202)
        at Java.security.AccessController.doPrivileged(Native Method)
        at Java.net.URLClassLoader.findClass(URLClassLoader.Java:190)
        at Java.lang.ClassLoader.loadClass(ClassLoader.Java:306)
        at Sun.misc.Launcher$AppClassLoader.loadClass(Launcher.Java:301)
        at Java.lang.ClassLoader.loadClass(ClassLoader.Java:247)
Could not find the main class: org.Apache.hadoop.fs.FsShell.  Program will exit.
Error could not create input directory /distmap_output_input folder on hdfs file system

どのJavaは言う

/usr/Java/jdk1.6.0_32/bin/Java

echo $ CLASSPATHは空白行を与えます

猫〜/ .bash_profileさんのコメント

cat ~/.bash_profile
# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi

# User specific environment and startup programs

PATH=$PATH:$HOME/bin

export PATH

更新:

$ HADOOP_HOME /usr/lib/hadoop

$ HADOOP_CLASSPATH

/usr/lib/hadoop-0.20-mapreduce/hadoop-ant-2.0.0-mr1-cdh4.4.0.jar:/usr/lib/hadoop‌​-0.20-mapreduce/hadoop-ant.jar:/usr/lib/hadoop-0.20-mapreduce/hadoop-examples-2.0‌​.0-mr1-cdh4.4.0.jar:/usr/lib/hadoop-0.20-mapreduce/hadoop-examples.jar:/usr/lib/h‌​adoop-0.20-mapreduce/hadoop-core.jar:/usr/lib/hadoop-0.20-mapreduce/hadoop-core-2‌​.0.0-mr1-cdh4.4.0.jar:/usr/lib/hadoop-0.20-mapreduce/hadoop-test-2.0.0-mr1-cdh4.4‌​.0.jar:/usr/lib/hadoop-0.20-mapreduce/hadoop-test.jar:/usr/lib/hadoop-0.20-mapreduce/hadoop-tools-2.0.0-mr1-cdh4.4.0.jar:/usr/lib/hado‌​op-0.20-mapreduce/hadoop-tools.jar:/usr/lib/hadoop-0.20-mapreduce/lib/*jar:/usr/lib/hadoop/hadoop-common.jar:/usr/lib/hadoop/hadoop-common-2.0.0-cdh4.4.0.jar

最後の2つのjarファイルには、PlatformNameおよびFsShellというクラスがあります。それでも動作しません。

誰かがこの問題を修正するのを手伝ってくれませんか?

ありがとう

13
Ashwin

hadoop-auth-2.2.0.jarhadoop2.2.のために存在する必要があります
追加hadoop auth jarバージョンに

18

あなたがMavenユーザーであり、この問題に直面した場合-

    <dependency>
        <groupId>org.Apache.hadoop</groupId>
        <artifactId>hadoop-client</artifactId>
        <version>${hadoop.client.version}</version>
    </dependency>
    <dependency>
        <groupId>org.Apache.hadoop</groupId>
        <artifactId>hadoop-common</artifactId>
        <version>${hadoop.client.version}</version>
    </dependency>

注::hadoop-client:2.5.2だけでは、必要なすべてのhadoop依存関係がもたらされませんでした。そのため、必要なすべての依存関係をもたらすhadoop-commonを追加しました。

3
Thamme Gowda

私の特定のケースでは、私はMavenを使用しています。POMとクラスパスの両方にhadoop-authがありましたが、まだこの例外が発生していました。

最終的にそれを修正したのは、POMの依存関係のスコープを「提供」から「コンパイル」に変更したことです。

0
JoeMjr2

Hadoop HADOOP_CLASSPATHの問題

これは役に立ちます。

ありがとうございます。それでは、お元気で、
アロク・ターカー

0
linux_fanatic