分享

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

Joker 发表于 2014-12-1 21:56:55 [显示全部楼层] 只看大图 回帖奖励 阅读模式 关闭右栏 4 116529
javaweb整合hadoop后测试下载,但是点击下载报错
  1. javax.servlet.ServletException: Servlet execution threw an exception
  2.         org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
  3. root cause
  4. java.lang.NoClassDefFoundError: com/google/common/base/Preconditions
  5.         org.apache.hadoop.conf.Configuration$DeprecationDelta.<init>(Configuration.java:314)
  6.         org.apache.hadoop.conf.Configuration$DeprecationDelta.<init>(Configuration.java:327)
  7.         org.apache.hadoop.conf.Configuration.<clinit>(Configuration.java:409)
  8.         dfs.HDFSOperation.<init>(HDFSOperation.java:39)
  9.         control.DownloadHDFSServlet.doPost(DownloadHDFSServlet.java:42)
  10.         javax.servlet.http.HttpServlet.service(HttpServlet.java:646)
  11.         javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
  12.         org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
  13. root cause
  14. java.lang.ClassNotFoundException: com.google.common.base.Preconditions
  15.         org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1720)
  16.         org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1571)
  17.         org.apache.hadoop.conf.Configuration$DeprecationDelta.<init>(Configuration.java:314)
  18.         org.apache.hadoop.conf.Configuration$DeprecationDelta.<init>(Configuration.java:327)
  19.         org.apache.hadoop.conf.Configuration.<clinit>(Configuration.java:409)
  20.         dfs.HDFSOperation.<init>(HDFSOperation.java:39)
  21.         control.DownloadHDFSServlet.doPost(DownloadHDFSServlet.java:42)
  22.         javax.servlet.http.HttpServlet.service(HttpServlet.java:646)
  23.         javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
  24.         org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
复制代码



我的Jar
jar-2.jpg

jar-1.jpg






已有(4)人评论

跳转到指定楼层
w123aw 发表于 2014-12-2 01:07:59
楼主,整合的思路是什么?直接添加的jar包?
还是使用的rest api
回复

使用道具 举报

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

我是直接加Jar包的
回复

使用道具 举报

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.


回复

使用道具 举报

starrycheng 发表于 2015-4-15 10:26:36
楼主是不是缺包了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条