首页 > 系统 > Linux >

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

2017-04-20

解决Mac OS 下编译Hadoop Annotations 程序包com sun javadoc找不到问题。在Mac上演练Hadoop,但是在启动或执行命令时总显示一个提示。

解决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版本呢,应该可以,下一步要实验一下,找到一个一劳永逸的办法。

相关文章
最新文章
热点推荐