最近在研究hadoop,在用maven编译源码的过程中出现了个错误,一直编译过不去:

[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 3:58.734s
[INFO] Finished at: Tue Jan 08 18:39:18 CST 2013
[INFO] Final Memory: 29M/71M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-antrun-plugin:1.6:run (compile-proto) on project hadoop-common: An Ant BuildException has occured: exec returned: 127 -> [Help 1]
[ERROR] 
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException
[ERROR] 
[ERROR] After correcting the problems, you can resume the build with the command
[ERROR]   mvn <goals> -rf :hadoop-common

各种查找之后,经过网上的大量查找之后发现原因:

原因:hadoop-1.0.1需要maven3.0+和protoc2.4+,以上错误是protoc版本过低导致的.

The Maven embedder provider with the system plugin ($IDEA_HOME/plugins/maven/lib) is named maven-embedder-1.1-SNAPSHOT.jar, which seems a rather bad version for a released project.
But the big issue for us is that is is bundling Maven 2.2.1.
When using the maven-enforcer-plugin in a project, and forcing Maven version to be  >= 3.0.2, the _generate sources_ action, which used the Maven embedder, fails saying: Detected Maven Version: 2.2.1 is not in the allowed range 3.0.2.
Unlike before, decent Maven embedders now exist (http://repo1.maven.org/maven2/org/apache/maven/maven-embedder/)
As we are using XMLBeans in some modules, that leads to compile issues.
Workaround: Use "external" Maven runner (lifecycle phases launch), but that is really annoying.
Could it be possible to update the embedder, or being able to choose to always use the external runner?

于是马上重新安装了protoc2.4(转)

第一部分:windows7 安装 protocol buffer  (如果没有安装Maven,先安装maven,并且maven -version 验证安装成功)

1. 下载地址: http://code.google.com/p/protobuf/downloads/list 。从这里下载protobuf-2.4.1.tar.gz 和 protoc-2.4.1-win32.zip 两个包。分别解压到各自目录。

2. 将protoc-2.4.1-win32中的protoc.exe拷贝到c:\windows\system32中。

3. 将proto.exe文件拷贝到解压后的XXX\protobuf-2.4.1\src目录中.

4. 进入XXX\protobuf-2.4.1\java 目录  执行maven package命令编辑该包 生成protobuf-java-2.4.1.jar文件(位于target目录中)。

5. 假设你的数据文件目录在XXX\data目录,把上一步生成的jar拷贝到该目录中即可。

6. 进入XXX\protobuf-2.4.1\examples目录,可以看到addressbook.proto文件,执行命令protoc --java_out=. addressbook.proto命令,如果生成com文件夹并在最终生成AddressBookProtos类则说明安装成功。

第二部分:使用篇

定义proto文件:

Java代码  收藏代码
  1. option java_outer_classname = "UserModelDatas";
  2. message ContextMatchedItemPair{
  3. message Context{
  4. optional string time=1;
  5. optional int32 temperature=2;
  6. optional string weather=3;
  7. optional string location=4;
  8. optional int32 priority=5;
  9. }
  10. optional Context context=1;
  11. message MatchedItem{
  12. optional string itemTypeId=1;
  13. optional double matchRatio=2;
  14. optional string approachType=3;
  15. message Item{
  16. optional string itemID =1;
  17. optional string type=2;
  18. optional string url=3;
  19. optional string img=4;
  20. optional string title=5;
  21. optional string abs=6;
  22. optional string date=7;
  23. optional string sourceTypeId=8;
  24. }
  25. optional Item item=4;
  26. }
  27. repeated MatchedItem matchedItem = 2;
  28. }
  29. //out class
  30. message UserModelData{
  31. repeated ContextMatchedItemPair contextMatchedItemPair=1;
  32. }

执行命令:protoc --java_out=.UserModelData.proto即在同级目录下生成UserModelDatas类,该类即可在工程中使用了。如果要使用的话,还需要在工程中引入安装过程中生成的protobuf-java-2.4.1.jar 。

PS: 注意到我的所有类型都是repeated或者optional,并没有用required。 个人习惯而已。

转载于:https://www.cnblogs.com/java20130722/archive/2013/01/10/3206999.html

编译hadoop源码遇到问题 及时解决相关推荐

  1. 编译Hadoop源码

    背景: 在阅读hadoop源代码过程中会发现部分类或者函数无法找到,这是由于Hadoop2.0使用了Protocol Buffers定义了RPC协议, 而这些Protocol Buffers文件在Ma ...

  2. 编译php源码错误集与解决

    起步 服务器Ubuntu14.04已后lamp开发环境,却还是没有不能顺利编译php源码,在此整理编译过程. 获取源码与编译 确保已安装了gitsudo apt-get install git -y, ...

  3. 编译android源码遇到错误及其解决方法

    升级ubuntu的14.04后,android的源码又编译错误了,一下是错误说明赫解决方法: 1.make: *** [out/host/linux-x86/obj/EXECUTABLES/aidl_ ...

  4. android源码编译失败,编译android源码遇到错误及其解决方法

    升级ubuntu的14.04后,android的源码又编译错误了,一下是错误说明赫解决方法: 1.make: *** [out/host/linux-x86/obj/EXECUTABLES/aidl_ ...

  5. 大数据之-Hadoop源码编译_编译hadoop源码前_需要准备的软件_以及编译步骤---大数据之hadoop工作笔记0045

    编译源码,首先要准备一台Centos可以联网的虚拟机,一定要可以连接外网 然后准备上面的这些软件. 可以看到软件都在上面这个目录下. 首先是安装jdk,然后配置JAVA_HOME

  6. hadoop编译java,Hadoop源码编译(2.4.1)

    背景 Hadoop 2.4.1预编译版本自带的libhadoop.so是在32位机器上编译上,导致在64位OS上运行时,总出现如下告警: WARN util.NativeCodeLoader: Una ...

  7. 大数据之-Hadoop源码编译_源码编译的意义---大数据之hadoop工作笔记0044

    然后我们再来看一下hadoop的源码编译, 先看看,可以去官网去下载,hadoop-2.7.2.tar.gz的源码去 下载了以后我们需要去编译,源码,为什么? 比如:上面这个源码是32位的,那么如果我 ...

  8. hadoop源码_HBASE源码导入IDEA并开启DEBUG调试

    前言:为了更深入的理解HBase的源码,对源码进行跟踪调试是一个很好的方法.本文详细记录了把社区版的HBase1.2.0源码导入idea中,进行编译调试的过程,以及在整个操作流程中遇到的一些坑. 一. ...

  9. hadoop 源码编译---Win7(64位)

    说明: 在Windows 平台上编译hadoop 源代码,hadoop源码包的安装说明文件[BUILDING.txt]描述如下 haoop官方文档上需要准备的文件: * Windows System ...

最新文章

  1. json支持utf-8_发票查重百科支持系统对接
  2. 微信小程序自定义变量使用,静态变量
  3. 学习Cocos2d的博客 --推荐
  4. 如何关闭极域课堂(亲测有效)(含下载链接)
  5. 思科 命令 TFTP
  6. 2020国内十大API接口服务平台
  7. python读取excel并绘制折线图
  8. “爆炸图!“ArcGIS中制作一张好看的爆炸分析图(附练习数据)
  9. H3C防火墙-安全域
  10. Java如何实现浅克隆与深克隆_Java浅谈克隆clone
  11. 【Java 数据结构】Map和Set
  12. Unity 2D光照(2D Light)和阴影(Shadow Caster 2D)
  13. 全球与中国带灯轻触开关市场现状及未来发展趋势
  14. 【第45期】《你好,安怡》热播,AI觉醒,奇点临近?
  15. 电荷放大器+低通滤波器的设计
  16. Kafka3.x核心速查手册三、服务端原理篇-2、Broker选举机制
  17. java发邮件新浪_JavaMail如何通过sina企业邮箱进行发送邮件?
  18. 阿里分众强强联手威力不容小觑 但腾讯京东也不是毫无招架之力
  19. HumanNeRF:从2D视频提取动态人像,并转换为3D模型
  20. VOFM、Copy Control与合并开票 (ZT)

热门文章

  1. TensorFlow YOLO3
  2. shell test
  3. gdb查看空指针 linux_资深程序员总结:分析Linux进程的6个方法,全都告诉你!
  4. 一篇文章搞懂filebeat(ELK)
  5. Java基础学习总结(167)——Java项目实践中如何实现幂等
  6. Java基础学习总结(118)——单元测试的必要性和重要性
  7. 使用计算机计算一个多边形,多边形面积计算器
  8. mysql动态加载数据库数据库_Mysql动态更新数据库脚本的示例讲解
  9. python自动导出数据脚本_使用python生成一个导出数据库的bat脚本文件的示例代码...
  10. python输入错误提示再次输入_Python实现用户登录并且输入错误三次后锁定该用户...