Java 如何在windows下构建hadoop源代码?
正在尝试从windows 7 x64下的源代码构建hadoop。根据指示和 我从、签出到Java 如何在windows下构建hadoop源代码?,java,apache,maven,hadoop,Java,Apache,Maven,Hadoop,正在尝试从windows 7 x64下的源代码构建hadoop。根据指示和 我从、签出到源代码/branch-2.5(SHA-1:fa3bb675a728105d69614f53abe4339958550adf)克隆了hadoop源代码 然后从windows控制台运行: set Platform=x64 clean安装-Pdist,原生win-DskipTests-Dtar 获取错误-[error]未能在hadoop项目上执行目标org.apache.hadoop:hadoop maven插件:
源代码/branch-2.5
(SHA-1:fa3bb675a728105d69614f53abe4339958550adf)克隆了hadoop源代码
然后从windows控制台运行:
set Platform=x64
clean安装-Pdist,原生win-DskipTests-Dtar
[error]未能在hadoop项目上执行目标org.apache.hadoop:hadoop maven插件:2.5.0-SNAPSHOT:protoc(编译protoc):org.apache.maven.plugin.MojoExecutionException:“protoc--version”未返回版本->[Help 1]
有什么办法解决这个问题吗?看来您缺少了
protoc
编译器
您可以从下载并安装2.5.0
二进制文件
然后,您可以设置
HADOOP\u PROTOC\u PATH
以指向安装目录。HADOOP maven插件的PROTOC mojo做的第一件事是使用Java的Java.lang.Process
类尝试执行以下命令:
protoc --version
基本上,这样做是为了检查系统上协议缓冲区编译器(protoc)的版本是否与protobuf
JAR的版本匹配
这方面有4个结果:
- 它找不到要执行的
命令(它收到的退出值为127)protoc
- 它不接收退出值127,但也不返回版本值
- 返回的版本与protobuf jar的版本不匹配
- 返回一个版本,它与protobuf jar的版本匹配
protoc--version
,它能工作吗
正如他们在其网站中所述,如果您的系统中有多个版本的protoc
,您可以在构建shell中设置HADOOP\u protoc\u PATH
环境变量,以指向要用于HADOOP构建的环境变量。如果未定义此环境变量,将在路径中查找protoc
。您的路径上是否有此功能
如果尚未安装协议缓冲区编译器,可以从以下位置下载:
在Mac/OsX上构建protobuf下载:使用clang/libc++:tar xfvj protobuf-2.5.0.tar.bz2 cd protobuf-2.5.0编译协议缓冲区。/configure CC=clang CXX=clang++cxflags='-std=c++11-stdlib libc++-O3-g'LDFLAGS='-stdlib libc++'LIBS=“-lc++-lc abi”make-j4 sudo make安装请参阅