hadoop整合web报错java.lang.ClassNotFoundException: com.google.common.base.Pre...

查看数: 116535 | 评论数: 4 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2014-12-1 21:56

正文摘要:

javaweb整合hadoop后测试下载,但是点击下载报错 javax.servlet.ServletException: Servlet execution threw an exception         org.apache.tomcat.websocket.server.WsFilter.do ...

回复

starrycheng 发表于 2015-4-15 10:26:36
楼主是不是缺包了
w123aw 发表于 2014-12-2 12:44:47
Joker 发表于 2014-12-2 09:25
我是直接加Jar包的


你按照这样试试:

首先配置WebHDFS,并启动Httpfs ,详细参考:

Hadoop web编程--REST API WebHDFS

这个操作成功之后,我们进行第二部,Java中嵌入shell。

如何嵌入,参考下面代码:

使用到Process和Runtime两个类,返回值通过Process类的getInputStream()方法获取
  1. package ark;
  2. import java.io.BufferedReader;
  3. import java.io.IOException;
  4. import java.io.InputStreamReader;
  5. import java.util.ArrayList;
  6. import java.util.List;
  7. public class ReadCmdLine {
  8.         public static void main(String args[]) {
  9.                 Process process = null;
  10.                 List<String> processList = new ArrayList<String>();
  11.                 try {
  12.                         process = Runtime.getRuntime().exec("ps -aux");
  13.                         BufferedReader input = new BufferedReader(new InputStreamReader(process.getInputStream()));
  14.                         String line = "";
  15.                         while ((line = input.readLine()) != null) {
  16.                                 processList.add(line);
  17.                         }
  18.                         input.close();
  19.                 } catch (IOException e) {
  20.                         e.printStackTrace();
  21.                 }
  22.                 for (String line : processList) {
  23.                         System.out.println(line);
  24.                 }
  25.         }
  26. }
复制代码

调用shell脚本,判断是否正常执行,如果正常结束,Process的waitFor()方法返回0

  1.         public static void callShell(String shellString) {
  2.                 try {
  3.                         Process process = Runtime.getRuntime().exec(shellString);
  4.                         int exitValue = process.waitFor();
  5.                         if (0 != exitValue) {
  6.                                 log.error("call shell failed. error code is :" + exitValue);
  7.                         }
  8.                 } catch (Throwable e) {
  9.                         log.error("call shell failed. " + e);
  10.                 }
  11.         }
复制代码

完成上面两部,就可以达到通过Java操作web hdfs.


Joker 发表于 2014-12-2 09:25:25
w123aw 发表于 2014-12-2 01:07
楼主,整合的思路是什么?直接添加的jar包?
还是使用的rest api

我是直接加Jar包的
w123aw 发表于 2014-12-2 01:07:59
楼主,整合的思路是什么?直接添加的jar包?
还是使用的rest api
关闭

推荐上一条 /2 下一条