类名丢失
我下有机/ 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
父目录编译它。下org/myorg
创建
Write.class我运行它使用
从Java的org
父目录org.myorg.Write
它说
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/hadoop/fs/FSDataOutputStream
at java.lang.Class.getDeclaredMethods0(Native Method)
但我下载的jar从this link。此链接表示FSDataOutputStream类存在。
可能是什么原因?
您没有设置CLASSPATH执行 - 你有它的编译过程中设置:
的Windows:
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文件。
你必须给出确切的路径,其中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中使用比你必须使用;
代替:
如果我在桌面上怎么办?我需要给全路径吗? – 2015-02-11 06:14:12
不,那么你不必给它,如果'Java class file'和jar都存在于同一个位置,并且你从那里调用'java'命令,那么就不需要给出完整路径 – 2015-02-11 06:25:05
然后错误 – 2015-02-11 06:31:43
我从'父目录运行org'它说:“找不到文件“Unix系统 – 2015-02-11 05:58:58