我的org / myorg下的java文件
package org.myorg;
import java.io.*;
import java.util.*;
import java.net.*;
import org.apache.hadoop.fs.*;
import org.apache.hadoop.conf.*;
import org.apache.hadoop.io.*;
import org.apache.hadoop.mapred.*;
import org.apache.hadoop.util.*;
public class Write{
public static void main (String [] args) throws Exception{
try{
Path pt=new Path("hdfs:localhost:8020/user/jfor/out/abc");
FileSystem fs = FileSystem.get(new Configuration());
BufferedWriter br=new BufferedWriter(new OutputStreamWriter(fs.create(pt,true)));
// TO append data to a file, use fs.append(Path f)
String line;
line="Disha Dishu Daasha";
System.out.println(line);
br.write(line);
br.close();
}catch(Exception e){
System.out.println("File not found");
}
}
}
我用
编译了它 javac -classpath hadoop-0.20.1-dev-core.jar org/myorg/Write.java
来自org
的父目录。
Write.class在org/myorg
我使用
运行它java org.myorg.Write
来自org
它说
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/hadoop/fs/FSDataOutputStream
at java.lang.Class.getDeclaredMethods0(Native Method)
但是我从this link下载了jar。此链接表示存在FSDataOutputStream类。
可能是什么原因?
答案 0 :(得分:0)
您没有为执行设置类路径 - 您在编译期间设置了它:
视窗:
java -cp .;hadoop-0.20.1-dev-core.jar org.myorg.Write
UNIX:
java -cp .:hadoop-0.20.1-dev-core.jar org.myorg.Write
您必须指定类路径(-cp)以包含当前目录(在您的情况下)以及hadoop jar文件。
答案 1 :(得分:0)
您必须提供jar
存在的确切路径
java -cp .:give_the_path_to_the_jar org.myorg.Write
例如,如果它存在于我的桌面
中java -cp .:/home/neeraj/Desktop/hadoop-0.20.1-dev-core.jar org.myorg.Write
.
代表当前目录
注意:以上示例适用于linux(ubuntu),如果您需要在Windows中使用,则必须使用;
代替: