java - Hadoop 中的 NoClassDefFoundError 错误

标签 java hadoop runtime-error noclassdeffounderror

所以在浏览了很多关于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 中 java.lang.NoClassDefFoundErrorClassNotFoundException 之间的区别,并且已经研究了通常导致它的原因。简而言之,这是因为某些类在运行时对程序不可用,但在编译时可用。因此我没有遇到编译时错误。

我添加了两个类路径,一个添加到 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.*;

最佳答案

您需要从 java 代码中创建一个 jar,如给定的 here :

$ mkdir my_classes 
$ javac -classpath $HADOOP_HOME/hadoop-$HADOOP_VERSION-core.jar -d my_classes <name of the main class> 
$ jar -cvf <name of the jar> -C my_classes .

以这种方式运行 jar:

$HADOOP_HOME/bin/hadoop jar <name of the jar> <name of the main class> <arguments to the program>

请参阅documentation page hadoop的jar命令说明。

关于java - Hadoop 中的 NoClassDefFoundError 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16829054/

相关文章:

java - JAR 部署后自动更新 Maven 依赖项

java - 使用 runnable jar 运行 akka

java - 在 Canvas 上绘制路径作为动画

c++ - 不允许的系统调用 : SYS_socketcall - Error when trying to verify ISBN

python - tensorflow 错误 : 'FileWriter' method

java.sql.SQLSyntaxErrorException::ORA-00907: 缺少右括号错误

python - 如何阅读 Spark 处理日志?

hadoop - Hive 更新效率(版本 0.14)

java - jar - cvf 命令没有运行?

android - 如何解决这些错误 : acAppName=/system/bin/surfaceflinger and org. json.JSONObject cannot be converted to JSONArray?