1.通过java.net.URL实现屏幕显示demo1文件的内容
package Hdfs;
import java.io.InputStream;
import java.net.URL;
import org.apache.hadoop.fs.FsUrlStreamHandlerFactory;
import org.apache.hadoop.io.IOUtils;
public class JarDemo {
static{
URL.setURLStreamHandlerFactory(new FsUrlStreamHandlerFactory());
}
public static void main(String[] args) {
InputStream in =null;
try {
in= new URL(args[0]).openStream();
IOUtils.copyBytes(in, System.out, 4096,false);
} catch (Exception e) {
e.printStackTrace();
} finally{
IOUtils.closeStream(in);
}
}
}
2.打包,将上述java文件打成jar包
(1)鼠标右键export
![HDFS的java客户端操作代码(Windows上打jar包,提交至linux运行)](http://www.linuxdiyf.com/linux/uploads/allimg/170227/2-1F22G050213V.png)
(2)找到jar file项
![HDFS的java客户端操作代码(Windows上打jar包,提交至linux运行)](http://www.linuxdiyf.com/linux/uploads/allimg/170227/2-1F22G05030330.png)
(3)输入jar包存放的路径
![HDFS的java客户端操作代码(Windows上打jar包,提交至linux运行)](http://www.linuxdiyf.com/linux/uploads/allimg/170227/2-1F22G05039146.png)
(4)将jar包所在的主类在下面选择框选中,如果此部不做,需要在linux运行jar包的时候显示指明主类。如com.hdfs
![HDFS的java客户端操作代码(Windows上打jar包,提交至linux运行)](http://www.linuxdiyf.com/linux/uploads/allimg/170227/2-1F22G0504T57.png)
3.打包好在指定位置存放,通过CRT传输至linux上对应的/usr/local/txtnode中
如下图运行此jar包。
![HDFS的java客户端操作代码(Windows上打jar包,提交至linux运行)](http://www.linuxdiyf.com/linux/uploads/allimg/170227/2-1F22G0505R92.png)
问题所在:由于输入的参数是目录而非文件报错。
解决此问题:
(1)准备一个demo1文件上传至hdfs中
![HDFS的java客户端操作代码(Windows上打jar包,提交至linux运行)](http://www.linuxdiyf.com/linux/uploads/allimg/170227/2-1F22G0510c11.png)
(2)上传至HDFS命令
![HDFS的java客户端操作代码(Windows上打jar包,提交至linux运行)](http://www.linuxdiyf.com/linux/uploads/allimg/170227/2-1F22G05120423.png)
(3)再次执行便可显示demo1里面的内容
![HDFS的java客户端操作代码(Windows上打jar包,提交至linux运行)](http://www.linuxdiyf.com/linux/uploads/allimg/170227/2-1F22G05131500.png)