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"/>
四、改完上面的,当我们在编译的时候,那些需要的JAR包并没有同时添加到生成的JAR内,这样会有错误,所以我们要修改MANIFIEST.MF文件,相信搞过可运行JAR包的朋友都清楚这个文件用一个JAR来说是多么的重要。
在同级目录下找到META-INF/MANIFEST.MF,找到Bundle-ClassPath:,然后添加如下:
classes/,lib/hadoop-core.jar,lib/commons-configuration-1.6.jar,lib/commons-httpclient-3.0.1.jar,lib/commons-lang-2.4.jar,lib/jackson-core-asl-1.8.8.jar,lib/commons-cli-1.2.jar
注意,这一大段不要换行,否则在生成JAR包时会报错。
接下来就开始我们正式的编译工作了,假设ant那些我们都配置好了,已经在path中了,并且ant版本高于1.7.2(建议下最新的),然后我们直接在cmd下执行: ant ,最后提示
BUILD SUCCESSFUL
Total time: 5 seconds
成功!
WIN+E 资源管理器,进入目录 hadoop-1.2.1\build\contrib\eclipse-plugin ,看到文件 hadoop-eclipse-plugin-1.2.1.jar ,恩,我们自己的插件出来了
拷贝 hadoop-eclipse-plugin-1.2.1.jar 文件至 eclipse\plugins 目录,确认安装吧
启动Eclipse 后 Window->Open Perspective->Other ,弹出对话框列表中,会出现图标为蓝色大象,文字为Map/Reduce ,就在JPA下方
我按这个方法配置hadoop1.2.1成功,配置hadoop1.1.2却屡屡不成功,搞了好几个小时了,是eclipse4.3与hadoop1.1.2不兼容吗?我想这种可能性应该为0吧,求大牛告诉我是什么原因?
注意:我能ant成功,但把插件拷到eclipse下却没反应,不能集成
--------------------编程问答-------------------- 你生成的jar包名是hadoop-eclipse-plugin-1.1.2.jar吗? --------------------编程问答-------------------- 当然了,在网上找了很多这样的jar包都不行,不知道咋回事 --------------------编程问答--------------------
我生成成功了,却没找到名为hadoop-eclipse-plugin-1.1.2.jar的包
补充:Java , Eclipse