したがって、SOに関する多くの投稿を確認し、いくつかのJavaの基本を修正した後でも、このエラーが発生します
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/hadoop/io/Writable
at java.lang.Class.getDeclaredMethods0(Native Method)
at java.lang.Class.privateGetDeclaredMethods(Class.java:2451)
at java.lang.Class.getMethod0(Class.java:2694)
at java.lang.Class.getMethod(Class.java:1622)
at sun.launcher.LauncherHelper.getMainMethod(LauncherHelper.java:494)
at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:486)
java.lang.NoClassDefFoundError
私はJavaのとの違いを知っておりClassNotFoundException
、通常何が原因であるかを調べました。簡単に言えば、一部のクラスは実行時にはプログラムで使用できませんが、コンパイル時には使用できるためです。したがって、コンパイル時エラーは発生しません。
2 つのクラスパスを追加しました。1 つは に、もう 1 つは に追加commons-logging-1.1.3.jar
しましたhadoop-core.*jar
。クラスパスが正しいと確信しています。
これが私のプログラムのインポートです
import java.io.*;
import org.apache.hadoop.io.SequenceFile;
import org.apache.hadoop.io.SequenceFile.*;
import org.apache.hadoop.io.SequenceFile.Writer;
import org.apache.hadoop.io.*;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.io.Writable;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.conf.*;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.*;