在eclipse下编译hadoop2.0源码(补充篇:解决eclipse工程build时报错)

本文针对在 Eclipse 下编译 Hadoop 2.0 源码过程中出现的各种错误进行了详细的说明,并提供了解决方案。涉及 buildpath 问题、缺失类文件、依赖冲突等问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        在上文http://blog.youkuaiyun.com/dywywh709/article/details/21229075(在eclipse下编译hadoop2.0源码)中将maven工程编译成eclipse项目然后导入eclipse,但是细心的朋友会发现导入elipse后会报出各种各样的错误,通过努力本人解决了报的错误,与大家做一次分享,希望能共同进步。

     常见的错误及解决方案列举如下:

     

1. hadoop-streaming里面的build path有问题,显示/root/workspace/hadoop-2.2.0-src/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/conf(missing)

我个人认为这个问题可能是由于eclipse不支持跨model的文件引用。

解决办法:大家找到/root/workspace/hadoop-2.2.0-src/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/conf目录下capacity-scheduler.xml文件,将其copy至/root/workspace/hadoop-2.2.0-src/hadoop-tools/hadoop-streaming/dev-support目录下;然后打开/root/workspace/hadoop-2.2.0-src/hadoop-tools/hadoop-streaming目录下的pom.xml文件,找到如下位置:

        <directory>${basedir}/../../hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/conf</directory>

        将其修改为:

       <directory>${basedir}/hadoop-tools/hadoop-streaming/dev-support</directory>

至此,该问题解决。


2/hadoop-common/src/test/java/org/apache/hadoop/io/serializer/avro/TestAvroSerialization.java显示没有AvroRecord类,在网上搜索到AvroRecord类放入到同级包中就行了。

       http://download.youkuaiyun.com/detail/dywywh709/7039179(此处可以下载该类)


3org.apache.hadoop.ipc.protobuf包里面缺少两个类TestProtos.java,TestRpcServiceProtos.java.

      需要在/hadoop-common/target/generated-test-sources/java/org/apache/hadoop/ipc中找到profobuf拷贝到/hadoop-common/src/test/java中就好了


4. hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/TestDFSClientFailover.java中报sun.net.spi.nameservice.NameService错误,这是一个需要import的包,存在于openjdk中,在Oracle Jdk中没找到,需要下载一个。NameService是一个接口,在网上找一个NameService放到该包中就好。 http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/7u40-b43/sun/net/spi/nameservice/NameService.java#NameService

5/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/tools/offlineEditsViewer/XmlEditsVisitor.java里面显示 
import com.sun.org.apache.xml.internal.serialize.OutputFormat; 
import com.sun.org.apache.xml.internal.serialize.XMLSerializer; 
失败.

这是由于Eclipse的强检查原则,打开Java -> Compiler -> Errors/Warnings and under "Deprecated and restricted API" change the setting of "Forbidden reference (access rules)" 将error级别调整到warning级别就好。


6. /hadoop-auth/org/apache/hadoop/security/authentication/client/AuthenricatorTestCase.java中显示server.start()和server.stop()错误,还没找到原因所在,待检查~~~(这里不影响编译及调试)



希望能解决大家遇到的一些错误,共同进步。

         


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值