当前位置: 代码迷 >> Eclipse >> Windows7编译eclipse hadoop插件,该怎么处理
  详细解决方案

Windows7编译eclipse hadoop插件,该怎么处理

热度:87   发布时间:2016-04-23 00:45:28.0
Windows7编译eclipse hadoop插件
hadoop貌似在0.20.0之后就不再提供eclipse插件的编译包了,而是直接提供一堆源码,具体原因就不清楚是啥了。但可能是考虑到eclipse版本的问题吧,各个开发者的偏好不一样,用的版本都不一样,与其自己编译不如给开发者,这样会更好。

环境

WIN7 64bit

Eclipse for Java EE 64bit,内核版本 4.3.0 246M  http://mirrors.neusoft.edu.cn/eclipse/technology/epp/downloads/release/kepler/R/eclipse-jee-kepler-R-win32-x86_64.zip

Hadoop 1.2.1 下载源码完整版本,下载时注意文件名字和大小60.8M https://issues.apache.org/jira/secure/attachment/12425381/hadoop-0.20.1-eclipse-plugin.jar

JDK 1.7.0_25-b17 http://download.oracle.com/otn-pub/java/jdk/7u25-b17/jdk-7u25-windows-x64.exe

ANT 1.9.2 http://apache.fayea.com/apache-mirror//ant/binaries/apache-ant-1.9.2-bin.zip



一、先编辑hadoop-1.2.1\src\contrib\eclipse-plugin\build.properties 文件,加入eclipse.home和版本信息(版本变量名再未加入时ant编译会报错),编辑后如下

#   Licensed under the Apache License, Version 2.0 (the "License");
#   you may not use this file except in compliance with the License.
#   You may obtain a copy of the License at
#
#       http://www.apache.org/licenses/LICENSE-2.0
#
#   Unless required by applicable law or agreed to in writing, software
#   distributed under the License is distributed on an "AS IS" BASIS,
#   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
#   See the License for the specific language governing permissions and
#   limitations under the License.


output.. = bin/
bin.includes = META-INF/,\
               plugin.xml,\
               resources/,\
               classes/,\
               classes/,\
               lib/

eclipse.home=E:\\Program Files\\eclipse\\
version=1.2.1


二、接下来需要在文件build.xml中加入Hadoop类路径

 <path id="eclipse-sdk-jars">
    <fileset dir="${eclipse.home}/plugins/">
      <include name="org.eclipse.ui*.jar"/>
      <include name="org.eclipse.jdt*.jar"/>
      <include name="org.eclipse.core*.jar"/>
      <include name="org.eclipse.equinox*.jar"/>
      <include name="org.eclipse.debug*.jar"/>
      <include name="org.eclipse.osgi*.jar"/>
      <include name="org.eclipse.swt*.jar"/>
      <include name="org.eclipse.jface*.jar"/>

      <include name="org.eclipse.team.cvs.ssh2*.jar"/>
      <include name="com.jcraft.jsch*.jar"/>
    </fileset> 
    <!--build need hadoop classes file.-->  
    <fileset dir="${hadoop.root}">    
       <include name="*.jar"/>    
    </fileset>
   
  </path>

好了,差不多了。此时运行会报错,原因是这个文件中还需要拷贝两个文件到插件包中,和上面道理一样,由于我们没编译整个项目,所以需要修改,直接引用包中内容。

三、jar打包的时候需要hadoop的一些jar文件,但是我们没有编译生成它,所以我们需要修改一下jar这个target。

另外,有几个jar是我们需要用到,而build.xml里面没有自动包含的,如果不包含它们,Eclipse连接Hadoop会出现failure to login错误,其实就是找不到类
在build.xml中找到

<copy file="${hadoop.root}/build/hadoop-core-${version}.jar" tofile="${build.dir}/lib/hadoop-core.jar" verbose="true"/>
<copy file="${hadoop.root}/build/ivy/lib/Hadoop/common/commons-cli-${commons-cli.version}.jar"  todir="${build.dir}/lib" verbose="true"/>
我们修改成

<copy file="${hadoop.root}/hadoop-core-${version}.jar" tofile="${build.dir}/lib/hadoop-core.jar" verbose="true"/>
<copy file="${hadoop.root}/lib/commons-cli-${commons-cli.version}.jar"  tofile="${build.dir}/lib/commons-cli.jar" verbose="true"/>
<copy file="${hadoop.root}/lib/commons-configuration-1.6.jar"  tofile="${build.dir}/lib/commons-configuration.jar" verbose="true"/>
<copy file="${hadoop.root}/lib/commons-httpclient-3.0.1.jar"  tofile="${build.dir}/lib/commons-httpclient.jar" verbose="true"/>
<copy file="${hadoop.root}/lib/commons-lang-2.4.jar"  tofile="${build.dir}/lib/commons-lang.jar" verbose="true"/>
<copy file="${hadoop.root}/lib/jackson-core-asl-1.8.8.jar"  tofile="${build.dir}/lib/jackson-core-asl.jar" verbose="true"/>
<copy file="${hadoop.root}/lib/jackson-mapper-asl-1.8.8.jar"  tofile="${build.dir}/lib/jackson-mapper-asl.jar" verbose="true"/>
  相关解决方案