您的位置:首页 > 编程语言 > Java开发

《转载》hadoop cdh3u3 eclipse插件编译

2013-10-11 20:46 253 查看

1. 编译环境

操作系统:debian6 amd64,安装ant和maven2这两个java打包工具。

hadoop:hadoop-0.20.2-cdh3u3.tar.gz

eclipse:eclipse-java-indigo-SR2-win32.zip

2. 编译hadoop

解压源码hadoop-0.20.2-cdh3u3.tar.gz并进入,执行
ant
,自动下载依赖并编译。

3. 编译eclipse plugin

解压eclipse。

进入hadoop源码的src/contrib/eclipse-plugin目录下,执行:

ant -Declipse.home=/eclipse解压目录/ -Dversion=0.20.2-cdh3u3 jar


4. 测试

在hadoop源码的build/contrib/eclipse-plugin中有hadoop-eclipse-plugin-0.20.2-cdh3u3.jar。拷贝至eclipse的plugins目录下,启动eclipse。 启动后报错:

An internal error occurred during: "Connecting to DFS localhost".


查看eclipse错误日志,显示:

java.lang.NoClassDefFoundError: org/apache/hadoop/thirdparty/guava/common/collect/LinkedListMultimap


还有一个错误:

java.lang.NoClassDefFoundError: org/codehaus/jackson/map/JsonMappingException


说明eclipse找不到guava和jackson包。

5. 修复bug

首先,在hadoop源码的lib目录下拷贝出guava-r09-jarjar.jar,jackson-mapper-asl-1.5.2.jar包。

5.1 方法一
把guava-r09-jarjar.jar,jackson-mapper-asl-1.5.2.jar中的字节码(org目录)解压至hadoop-eclipse-plugin-0.20.2-cdh3u3.jar的classes下。

5.2 方法二
把guava-r09-jarjar.jar,jackson-mapper-asl-1.5.2.jar放到hadoop-eclipse-plugin-0.20.2-cdh3u3.jar的lib目录下。

然后,修改该包META-INF目录下的MANIFEST.MF,将classpath修改为一下内容:

Bundle-ClassPath: classes/,lib/hadoop-core.jar,lib/guava-r09-jarjar.jar,lib/jackson-mapper-asl-1.5.2.jar


方法二理论上可以,但我测试未成功。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: