windows 中 hadoop2.7.5 在eclipse上的插件編譯

1、下載插件源碼

https://github.com/winghc/hadoop2x-eclipse-plugin

2、下載ant1.10.1

http://mirrors.tuna.tsinghua.edu.cn/apache//ant/binaries/apache-ant-1.10.1-bin.tar.gz

3、配置ant環境變量

ANT_HOME

E:\apache-ant-1.10.1-bin\apache-ant-1.10.1

path:增加%ANT_HOME%\bin

%JAVA_HOME%\bin;%M2_HOME%\bin;%ANT_HOME%\bin;----

4、下載hadoop-2.7.5和hadoop2x-eclipse-plugin插件,解壓

5、配置編譯插件

 進入到hadoop2x-eclipse-plugin-master\src\contrib\eclipse-plugin\build.xml文件中,找到

<target name="jar" depends="compile" unless="skip.contrib">這一行

往下找

 <copy file="${hadoop.home}/share/hadoop/common/lib/htrace-core-${htrace.version}.jar"  todir="${build.dir}/lib" verbose="true"/>

修改爲

 <copy file="${hadoop.home}/share/hadoop/common/lib/htrace-core-${htrace.version}-incubating.jar"  todir="${build.dir}/lib" verbose="true"/>

然後在此之後再增加以下兩行

<copy file="${hadoop.home}/share/hadoop/common/lib/servlet-api-${servlet-api.version}.jar"  todir="${build.dir}/lib" verbose="true"/>
 <copy file="${hadoop.home}/share/hadoop/common/lib/commons-io-${commons-io.version}.jar"  todir="${build.dir}/lib" verbose="true"/>

然後再找到

<jar
      jarfile="${build.dir}/hadoop-${name}-${hadoop.version}.jar"
      manifest="${root}/META-INF/MANIFEST.MF">

      <manifest>
   <attribute name="Bundle-ClassPath" 
    value="classes/, ------------這一行


追加以下兩行

 lib/servlet-api-${servlet-api.version}.jar,
 lib/commons-io-${commons-io.version}.jar,

並將lib/htrace-core-${htrace.version}.jar

替換爲lib/htrace-core-${htrace.version}-incubating.jar

6、hadoop2x-eclipse-plugin-master\src\ivy\libraries.properties文件中,更改下列屬性和其值使其對應hadoop2.7.5和當前環境的jar包版本,按以下配置文件中的版本好:
     hadoop.version=2.7.2       ------Hadoop版本號
     apacheant.version=1.10.1   -------ant版本號
     commons-collections.version=3.2.2
     commons-httpclient.version=3.1
     commons-logging.version=1.1.3
     commons-io.version=2.4
     slf4j-api.version=1.7.10
     slf4j-log4j12.version=1.7.10
7. hadoop2x-eclipse-plugin-master\ivy\libraries.properties文件中,屬性和值的修改同上面的2.。另外需要增加一個修改:
     htrace.version=3.1.0

8、然後執行

ant jar -Dversion=2.7.5 -Declipse.home=D:\eclipseOXY\eclipse-jee-oxygen-R-win32-x86_64\eclipse -Dhadoop.home=E:\Hadoop\hadoop-2.7.5


-Declipse.home是eclipse路徑

-Dhadoop.home是Hadoop所在路徑

如果遇到ivy-resolve-common:位置會有短暫的停頓,等待即可。一般不會超過2分鐘,如果時間太長,中斷操作,然後檢查配置文件是否出錯

正常編譯通過如下:

check-contrib:


init:
     [echo] contrib: eclipse-plugin


init-contrib:


ivy-probe-antlib:


ivy-init-antlib:


ivy-init:
[ivy:configure] :: Ivy 2.1.0 - 20090925235825 :: http://ant.apache.org/ivy/ ::
[ivy:configure] :: loading settings :: file = E:\Hadoop\hadoop2x-eclipse-plugin-master\ivy\ivysettings.xml


ivy-resolve-common:


ivy-retrieve-common:
[ivy:cachepath] DEPRECATED: 'ivy.conf.file' is deprecated, use 'ivy.settings.file' instead
[ivy:cachepath] :: loading settings :: file = E:\Hadoop\hadoop2x-eclipse-plugin-master\ivy\ivysettings.xml


compile:
     [echo] contrib: eclipse-plugin
   
[javac] E:\Hadoop\hadoop2x-eclipse-plugin-master\src\contrib\eclipse-plugin\build.xml:76: warning: 'includeantruntime' was not set, defaulting to build.sysclasspath=last; set to false for repeatable builds


jar:
     [copy] Copying 1 file to E:\Hadoop\hadoop2x-eclipse-plugin-master\build\contrib\eclipse-plugin\lib
     [copy] Copying E:\Hadoop\hadoop-2.7.5\share\hadoop\common\lib\slf4j-log4j12-1.7.10.jar to E:\Hadoop\hadoop2x-eclipse-plugin-master\build\contrib\eclipse-plugin\lib\slf4j-log4j12-1.7.10.jar
     [copy] Copying 1 file to E:\Hadoop\hadoop2x-eclipse-plugin-master\build\contrib\eclipse-plugin\lib
     [copy] Copying E:\Hadoop\hadoop-2.7.5\share\hadoop\common\lib\slf4j-api-1.7.10.jar to E:\Hadoop\hadoop2x-eclipse-plugin-master\build\contrib\eclipse-plugin\lib\slf4j-api-1.7.10.jar
     [copy] Copying 1 file to E:\Hadoop\hadoop2x-eclipse-plugin-master\build\contrib\eclipse-plugin\lib
     [copy] Copying E:\Hadoop\hadoop-2.7.5\share\hadoop\common\lib\guava-11.0.2.jar to E:\Hadoop\hadoop2x-eclipse-plugin-master\build\contrib\eclipse-plugin\lib\guava-11.0.2.jar
     [copy] Copying 1 file to E:\Hadoop\hadoop2x-eclipse-plugin-master\build\contrib\eclipse-plugin\lib
     [copy] Copying E:\Hadoop\hadoop-2.7.5\share\hadoop\common\lib\hadoop-auth-2.7.5.jar to E:\Hadoop\hadoop2x-eclipse-plugin-master\build\contrib\eclipse-plugin\lib\hadoop-auth-2.7.5.jar
     [copy] Copying 1 file to E:\Hadoop\hadoop2x-eclipse-plugin-master\build\contrib\eclipse-plugin\lib
     [copy] Copying E:\Hadoop\hadoop-2.7.5\share\hadoop\common\lib\netty-3.6.2.Final.jar to E:\Hadoop\hadoop2x-eclipse-plugin-master\build\contrib\eclipse-plugin\lib\netty-3.6.2.Final.jar
     [copy] Copying 1 file to E:\Hadoop\hadoop2x-eclipse-plugin-master\build\contrib\eclipse-plugin\lib
     [copy] Copying E:\Hadoop\hadoop-2.7.5\share\hadoop\common\lib\htrace-core-3.1.0-incubating.jar to E:\Hadoop\hadoop2x-eclipse-plugin-master\build\contrib\eclipse-plugin\lib\htrace-core-3.1.0-incubating.jar
     [copy] Copying 1 file to E:\Hadoop\hadoop2x-eclipse-plugin-master\build\contrib\eclipse-plugin\lib
     [copy] Copying E:\Hadoop\hadoop-2.7.5\share\hadoop\common\lib\servlet-api-2.5.jar to E:\Hadoop\hadoop2x-eclipse-plugin-master\build\contrib\eclipse-plugin\lib\servlet-api-2.5.jar
     [copy] Copying 1 file to E:\Hadoop\hadoop2x-eclipse-plugin-master\build\contrib\eclipse-plugin\lib
     [copy] Copying E:\Hadoop\hadoop-2.7.5\share\hadoop\common\lib\commons-io-2.4.jar to E:\Hadoop\hadoop2x-eclipse-plugin-master\build\contrib\eclipse-plugin\lib\commons-io-2.4.jar
      [jar] Building jar: E:\Hadoop\hadoop2x-eclipse-plugin-master\build\contrib\eclipse-plugin\hadoop-eclipse-plugin-2.7.5.jar


BUILD SUCCESSFUL
Total time: 31 seconds


會出現以下警告 [javac] E:\Hadoop\hadoop2x-eclipse-plugin-master\src\contrib\eclipse-plugin\build.xml:76: warning: 'includeantruntime' was not set, defaulting to build.sysclasspath=last; set to false for repeatable builds,上方的日誌

解決方案:

  <javac
     encoding="${build.encoding}"
     srcdir="${src.dir}"
     includes="**/*.java"
     destdir="${build.classes}"
     debug="${javac.debug}"
     deprecation="${javac.deprecation}"  
includeantruntime="on">  增加此字段即可,重新編譯
     <classpath refid="classpath"/>
    </javac>

解決  <javac
     encoding="${build.encoding}"
     srcdir="${src.dir}"
     includes="**/*.java"
     destdir="${build.classes}"
     debug="${javac.debug}"
     deprecation="${javac.deprecation}"  
includeantruntime="on">
     <classpath refid="classpath"/>
    </javac>






發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章