hadoop1 eclipse插件编译

hadoop貌似在0.20.0之后就不再提供eclipse插件的编译包了,而是直接提供一堆源码,具体原因就不清楚是啥了。但可能是考虑到eclipse版本的问题吧,各个开发者的偏好不一样,用的版本都不一样,与其自己编译不如给开发者,这样会更好。

        但给了一堆源码给我们,对我们这些不怎么熟ant的人就是个难题了。我就在编译的时候遇到了一堆问题了,杯具得很。但好在GOOGLE大神在,在很多博客文章的帮助下,总算解决了那些问题(在这里感谢那些文章的作者,恕我不能一一列举)。

 

        废话不多说了,直接来看看步骤:

        (以上步骤都假设你有hadoop代码,下载的包里面有带源码的,如果还没下载的,可以到这里下载,http://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/,注意不要下载bin的那个,那个不带源代码。我这里用到的hadoop版本是1.1.2,但此插件的编译方面在1.2.0下也通过。)

        1)hadoop的eclipse插件源码位于hadoop.home(这里的hadoop.home为你的hadoop主目录)/src/contrib/eclipse-plugin。

        ant不外乎是一个build.xml,我们先拿它开刀。

        我们找到<target name="jar",里面的元素<copy相关的先全部删了,然后添加如下的,当然,这里的hadoop-core-XXX.jar,这个XXX是版本号,请根据你下载的hadoop的版本进行设置,也可以在后面的build-contrib.xml中进行设置,这里用变量进行替换,等一下我们再看。

<copy file="${hadoop.root}/hadoop-core-1.1.2.jar" tofile="${build.dir}/lib/hadoop-core.jar" verbose="true"/>  
    <copy file="${hadoop.root}/lib/commons-cli-1.2.jar"  todir="${build.dir}/lib" verbose="true"/>  
    <copy file="${hadoop.root}/lib/commons-configuration-1.6.jar" tofile="${build.dir}/lib/commons-configuration-1.6.jar" verbose="true"/>  
    <copy file="${hadoop.root}/lib/commons-httpclient-3.0.1.jar" tofile="${build.dir}/lib/commons-httpclient-3.0.1.jar" verbose="true"/>  
    <copy file="${hadoop.root}/lib/commons-lang-2.4.jar" tofile="${build.dir}/lib/commons-lang-2.4.jar" verbose="true"/>  
    <copy file="${hadoop.root}/lib/jackson-core-asl-1.8.8.jar" tofile="${build.dir}/lib/jackson-core-asl-1.8.8.jar" verbose="true"/>  
    <copy file="${hadoop.root}/lib/jackson-mapper-asl-1.8.8.jar" tofile="${build.dir}/lib/jackson-mapper-asl-1.8.8.jar" verbose="true"/>  

网上很多文章都说只要这一步就OK了,但实验证明,我们编译的时候会出现找不到类的情况,主要是没有加载那些JAR包。

        2)添加JAR包到classpath

        还是build.xml文件中,我们找到<path id="classpath">

        在其末尾加上:

<fileset dir="${hadoop.root}">    
       <include name="*.jar"/>    
</fileset>

这里把hadoop根目录下的所有JAR包加入到classpath,至于这里为什么要加,我没怎么用Ant,就留给有兴趣的朋友去研究了。

        3)改完上面的,当我们在编译的时候,那些需要的JAR包并没有同时添加到生成的JAR内,这样会有错误,所以我们要修改MANIFIEST.MF文件,相信搞过可运行JAR包的朋友都清楚这个文件用一个JAR来说是多么的重要。

        在同级目录下找到META-INF/MANIFEST.MF,找到Bundle-ClassPath:,然后添加如下:

classes/,lib/hadoop-core.jar,lib/commons-configuration-1.6.jar,lib/commons-httpclient-3.0.1.jar,lib/commons-lang-2.4.jar,lib/jackson-core-asl-1.8.8.jar,lib/commons-cli-1.2.jar  

注意,这一大段不要换行,否则在生成JAR包时会报错。

        4)加完这些,可以说实际上编译就已经OK了,但我们需要跟特定的eclipse相结合,所以我们需要配置eclipse的路径,回到我们刚才build.xml文件的上层文件夹,也就是hadoop.home/src/contrib文件夹下。

        找到build-contrib.xml文件,找到project,在property最前面加多一个:

<property name="eclipse.home" value="D:/developerTools/eclipse/eclipse" />  

这里的D:/xxx是我的eclipse安装路径,注意,需要把原来windows下的\换成linux样式的/,否则会有问题的。

        

        接下来就开始我们正式的编译工作了.






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值