解决Mac OS 下编译Hadoop Annotations 程序包com.sun.javadoc找不到问题

在Mac上演练Hadoop,但是在启动或执行命令时总显示一个提示,看了很不爽,显示内容如下:
WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform… using builtin-java classes where applicable
意思是不能加载当前平台的本地化hadoop库,类似于Windows上面动态链接库,主要在$HADOOP_HOME/lib/native目录下如下图的文件:
这里写图片描述
解决的办法是在本机进行编译(版本2.6.4),将编译后的本地库拷贝到此目录下,没有hadoop服务启动时,将加载本地库,在Mac OS中,其,而非当前可用的内置java相关的类库。
在利用Maven编译Hadoop的过程中,到了hadoop Annotations子项目时,提示以下编译错误:
“[ERROR]/hadoop-annotations/src/main/java/org/apache/hadoop/classification/tools/ExcludePrivateAnnotationsStandardDoclet.java:[20,22] 错误: 程序包com.sun.javadoc不存在”
在编译前,已经安装了Java SDK,并且设置了JAVA_HOME、CLASSPATG等环境变量,并且安装Hadoop源文件包中提供的Building.txt文件的要求,在JAVA_HOME下建了一个classes目录,并将JRE中tools.jar 包在此目录下作了一个链接文件,应该不是环境的问题,还得查看错误日志,首先发现在编译后,提示一个⚠️:
*[WARNING] Some problems were encountered while building the effective model for org.apache.hadoop:hadoop-main:pom:2.6.4
[WARNING] ‘build.plugins.plugin.version’ for org.apache.maven.plugins:maven-javadoc-plugin is missing. @ line 388, column 19
[WARNING]
[WARNING] It is highly recommended to fix these problems because they threaten the stability of your build.*
提到了maven-javadoc-plugin的版本未提供,找到Hadoop Main项目下的Pom文件,即源码包根目录下的pom.xml,找到第388行,如下:
这里写图片描述
发现确实没有提供版本,查看本机Maven Repository(~/.m2目录下),发现已经有这个插件,是2.8.1版本,在pom文件中,加入这个版本信息,如下图:
这里写图片描述
重新编译,
mvn package -Pdist,native -DskipTests -Dtar -Dmaven.javadoc.skip=true -rf :hadoop-annotations
警告⚠️没有了,但是仍然找不到com.sun.javadoc包,难道是本机安装的脚步问题?查看hadoop-2.6.4-src/hadoop-common-project/hadoop-annotations目录下的POM文件,发现指定的JDK版本为1.7,而本机安装的是1.8,如下图:
这里写图片描述
将版本号改成1.8(本机安装的版本),重新编译,OK,问题解决。
看来Hadoop在不同版本的pom文件中,对Java的版本进行了固化,而不是动态根据当前环境的JAVA版本,造成了很大的困扰,想到此,考虑到是否还有其他pom文件里面对JAVA进行了版本相关的设置,查询一下,看看情况:
find . -name pom.xml |xargs grep requireJavaVersion
./hadoop-assemblies/pom.xml:
./hadoop-assemblies/pom.xml:
./hadoop-project/pom.xml:
./hadoop-project/pom.xml:
./pom.xml:
./pom.xml:
打开查询出来的pom文件,将版本改成本机版本,以免有遇到一些莫名其妙的问题。
能不能在pom中动态获取实际安装的Java版本呢,应该可以,下一步要实验一下,找到一个一劳永逸的办法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值