gpt4 book ai didi

java - Hadoop 中的 NoClassDefFoundError 错误

转载 作者:可可西里 更新时间:2023-11-01 14:50:22 28 4
gpt4 key购买 nike

所以在浏览了很多关于 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.*;

最佳答案

您需要像给定的 here 那样从 java 代码创建一个 jar :

$ 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/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com