错误提示如下
Exception in thread "main" java.lang.NoClassDefFoundError: com/ctc/wstx/io/InputBootstrapper
at Chapter3.main(Chapter3.java:12)
Caused by: java.lang.ClassNotFoundException: com.ctc.wstx.io.InputBootstrapper
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 1 more
完整代码如下
import java.io.BufferedReader;
import java.io.InputStreamReader;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FSDataInputStream;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
public class Chapter3 {
public static void main(String [] args) {
try {
Configuration conf = new Configuration();
FileSystem fs = FileSystem.get(conf);
Path filename = new Path("hdfs://localhost:9000/user/hadoop/test.txt");
FSDataInputStream is = fs.open(filename);
BufferedReader d = new BufferedReader(new InputStreamReader(is));
String content = d.readLine(); //读取文件一行
System.out.println("读取文件:/user/hadoop/test.txt");
System.out.println(content);
System.out.println("读取完成");
d.close();//关闭文件
fs.close();//关闭hdfs
}catch(Exception e) {
e.printStackTrace();
}
}
}
我成功安装了伪分布式hadoop,版本2.9.0,jdk1.8.0_171,jps查看各项启动正常
/user/hadoop/test.txt是创建在hdfs上的文件,想编程实现读取这个文件
之前编一些其他的hdfs java api时涉及到Configuration也会出现这种问题
据说Configuration在创建对象的时候会把配置文件夹在进来,也有把
core-site.xml和hdfs.site.xml拷贝到工程目录下的/bin文件夹,也有把hadoop-common-2.9.0.jar和
hadoop-hdfs-2.9.0.jar这两个包导入工程
也试过这样定义
conf.set("fs.defaultFS","hdfs://localhost:9000");
conf.set("fs.hdfs.impl","org.apache.hadoop.hdfs.DistributedFileSystem");
也没用
报错说找不到类com/ctc/wstx/InputBootstrapper,也不知道这个类在哪个包,是干啥用的
求解答 求解答 求解答