解决Eclipse中运行WordCount出现 java.lang.ClassNotFoundException: org.apache.h...
原文:http://tonymomo.pixnet.net/blog/post/62329497
1 package org.apache.hadoop.examples; 2 3 import java.io.File; 4 import java.io.FileInputStream; 5 import java.io.FileOutputStream; 6 import java.io.IOException; 7 import java.net.URL; 8 import java.net.URLClassLoader; 9 import java.util.ArrayList; 10 import java.util.List; 11 import java.util.jar.JarEntry; 12 import java.util.jar.JarOutputStream; 13 import java.util.jar.Manifest; 14 15 public class EJob { 16 17 // To declare global field 18 private static List<URL> classPath = new ArrayList<URL>(); 19 20 // To declare method 21 public static File createTempJar(String root) throws IOException { 22 if (!new File(root).exists()) { 23 return null; 24 } 25 Manifest manifest = new Manifest(); 26 manifest.getMainAttributes().putValue("Manifest-Version", "1.0"); 27 final File jarFile = File.createTempFile("EJob-", ".jar", new File( 28 System.getProperty("java.io.tmpdir"))); 29 30 Runtime.getRuntime().addShutdownHook(new Thread() { 31 public void run() { 32 jarFile.delete(); 33 } 34 }); 35 36 JarOutputStream out = new JarOutputStream( 37 new FileOutputStream(jarFile), manifest); 38 createTempJarInner(out, new File(root), ""); 39 out.flush(); 40 out.close(); 41 return jarFile; 42 } 43 44 private static void createTempJarInner(JarOutputStream out, File f, 45 String base) throws IOException { 46 if (f.isDirectory()) { 47 File[] fl = f.listFiles(); 48 if (base.length() > 0) { 49 base = base + "/"; 50 } 51 for (int i = 0; i < fl.length; i++) { 52 createTempJarInner(out, fl[i], base + fl[i].getName()); 53 } 54 } else { 55 out.putNextEntry(new JarEntry(base)); 56 FileInputStream in = new FileInputStream(f); 57 byte[] buffer = new byte[1024]; 58 int n = in.read(buffer); 59 while (n != -1) { 60 out.write(buffer, 0, n); 61 n = in.read(buffer); 62 } 63 in.close(); 64 } 65 } 66 67 public static ClassLoader getClassLoader() { 68 ClassLoader parent = Thread.currentThread().getContextClassLoader(); 69 if (parent == null) { 70 parent = EJob.class.getClassLoader(); 71 } 72 if (parent == null) { 73 parent = ClassLoader.getSystemClassLoader(); 74 } 75 return new URLClassLoader(classPath.toArray(new URL[0]), parent); 76 } 77 78 public static void addClasspath(String component) { 79 80 if ((component != null) && (component.length() > 0)) { 81 try { 82 File f = new File(component); 83 84 if (f.exists()) { 85 URL key = f.getCanonicalFile().toURL(); 86 if (!classPath.contains(key)) { 87 classPath.add(key); 88 } 89 } 90 } catch (IOException e) { 91 } 92 } 93 } 94 95 }
mian方法中添加:
File jarFile = EJob.createTempJar("bin");
EJob.addClasspath("/usr/hadoop/conf");
ClassLoader classLoader = EJob.getClassLoader();
Thread.currentThread().setContextClassLoader(classLoader);
。。。
((JobConf) job.getConfiguration()).setJar(jarFile.toString());
如果本文对您有帮助,点一下右下角的“推荐”
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Session 0x0 for server null,HBase无法启动解决方法
碰到个怪问题,Master上的HMaster服务老是自动死掉, 看错误日志只是提示连接失败Session 0x0 for server null 解决方法: 1. 关闭IP6 , 修改/etc/hosts 注释以"::1 "开头的 2. 校准HBase集群Zookeeper集群机器的时间,误差30秒以内 重启机器.ok
- 下一篇
Hadoop安装配置手册
Hadoop安装配置手册 一、 准备篇 Hadoop运行环境: SSH服务正常运行 JDK 没安装的可以自己安装一下。 二、 基础篇(单节点Hadoop) Hadoop下载 Hadoop下载页:http://hadoop.apache.org/releases.html#Download 本文基于hadoop1.0.4版本,下载:http://labs.mop.com/apache-mirror/hadoop/common/hadoop-1.0.4/hadoop-1.0.4.tar.gz 解压下载的源码压缩包到合适的位置,如:/Users/yinxiu/dev/hadoop-1.0.4(这是本文安装hadoop的位置) 环境变量(hadoop_env.sh) 目录/Users/yinxiu/dev/hadoop-1.0.4/conf 2.1 JAVA_HOME 必须变量 export JAVA_HOME=实际JDK路径 如: export JAVA_HOME=/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Docker安装Oracle12C,快速搭建Oracle学习环境
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS7安装Docker,走上虚拟化容器引擎之路
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- CentOS8安装Docker,最新的服务器搭配容器使用
- Hadoop3单机部署,实现最简伪集群
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- CentOS8编译安装MySQL8.0.19