Так, пройдя через множество постов на SO и пересматривая некоторые основы Java, я все еще получаю эту ошибкуNoClassDefFoundError Ошибка в Hadoop
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
и ClassNotFoundException
в Java, и просмотрел что обычно вызывает его. В двух словах это связано с тем, что некоторый класс недоступен для программы во время выполнения, но доступен во время компиляции. Следовательно, я не получаю ошибок времени компиляции.
Я добавил два пути класса, один в 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.*;
Этот класс находится в банке с изогнутым ядром, вы можете точно написать, как вы выполняете свою работу (включая путь к классам)? –
@CharlesMenguy Я использую ubuntu 12.04, это командная строка для его компиляции javac -cp "/home/hduser/hadoop/hadoop-core-1.1.2.jar:/home/hduser/Documents/commons-logging-1.1 .3/commons-logging-1.1.3.jar "TSVtoSeq.java Для запуска, java TSVtoSeq TrainingT1.tsv testOutput 2 аргумента передаются в основной файл входного файла и вывода – SLearner
Вы не устанавливаете свой путь к классам с помощью java -cp $ JARS', когда вы запускаете свою программу? –