我试图通过jar
执行java -jar abc.jar
文件来执行Java类,但每当我执行它时,我都会收到错误:
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/hadoop/conf/Configuration
hadoop-env.sh
目录中的/etc/hadoop/conf
个文件包含HADOOP_CLASSPATH
:
export HADOOP_CLASSPATH="/home/cloudera/commons-logging-1.1.3.jar:/home/cloudera/hadoop-common-2.4.1.jar:hadoop-core-1.2.1.jar:$HADOOP_CLASSPATH"
在Java代码中我有一些导入,如:
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.fs.FileSystem;
我认为它无法在运行时获得这些的定义。 导致这些错误的原因是什么?如何解决此问题?
注意:我是hadoop的新手,因此我不知道为什么以及如何设置所需的不同环境变量。任何例子对我都有帮助。
更新:执行java -cp $HADOOP_CLASSPATH:abc.jar:/home/extra_jars/* mypackage.classname
后,我收到错误java.io.IOException: Mkdirs failed to create /user/example
在我的代码中,我正在执行fs.copyFromLocalFile(false,true,sourcePath,targetPath);
而targetPath
是/user/example/ex1.csv
。我无法理解为什么即使我的/user/example
具有完全的红色写权限,也会出现此错误。