我对hadoop的eclipse插件做了一个噩梦。首先,最新的hadoop版本(1.1.1)甚至没有包含eclipse插件jar文件。版本1.0.4有这个插件,但是不起作用。早期版本的hadoop,比如0.22.0,有这个插件,它可以工作,但是现在这些版本的hadoop已经很旧了,我想使用最新版本。那么,针对hadoop的eclipse插件有什么用呢?为什么最新版本要么没有插件,要么如果有,那么插件就不工作了?每个人都对这个插件有这么多问题吗?我应该放弃这个插件吗?谢谢,香农
t9eec4r01#
我昨天好不容易才为hadoop-1.0.4安装了eclipse插件,并成功地进行了测试。插件不工作的原因是jar包丢失了一些lib:commons-cli-1.2.jarcommons-configuration-1.6.jarjackson-core-asl-1.8.8.jar文件jackson-mapper-asl-1.8.8.jarcommons-httpclient-3.0.1.jarcommons-lang-2.4.jar您可以将这个jar从${hadoop}/lib复制到${jar}/lib,并且不要忘记修改清单。为了方便起见,我向${eclipse plugin src}/build.xml目标jar添加了一些代码
<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}/lib/commons-configuration-${commons-configuration.version}.jar" todir="${build.dir}/lib" verbose="true"/> <copy file="${hadoop.root}/lib/commons-httpclient-${commons-httpclient.version}.jar" todir="${build.dir}/lib" verbose="true"/> <copy file="${hadoop.root}/lib/commons-lang-${commons-lang.version}.jar" todir="${build.dir}/lib" verbose="true"/> <copy file="${hadoop.root}/lib/jackson-core-asl-${jackson.version}.jar" todir="${build.dir}/lib" verbose="true"/> <copy file="${hadoop.root}/lib/jackson-mapper-asl-${jackson.version}.jar" todir="${build.dir}/lib" verbose="true"/>
以及${eclipse plugin src}/meta-inf中修改的manifest.mf
undle-ClassPath: classes/, lib/hadoop-core.jar, lib/commons-cli-1.2.jar, lib/commons-configuration-1.6.jar, lib/jackson-core-asl-1.8.8.jar, lib/commons-httpclient-3.0.1.jar, lib/jackson-mapper-asl-1.8.8.jar, lib/commons-lang-2.4.jar
重建eclipse插件,玩得开心!
4dbbbstv2#
好吧,结合hs3180的答案,这里是我在配置编译时实际做的。在${eclipse plugin src}/build.xml中,使用以下指令包含eclipse插件所需的jar。注意这里,而不是从 ${hadoop.root}/build ,复制 hadoop-core-${version}.jar 现在来自 ${hadoop.root} 因为如果您使用的是hadoop的编译版本 ${hadoop.root}/build 文件夹实际上是空的。复制 commons-cli-${commons-cli.version}.jar 现在来自 ${hadoop.root}/lib 出于同样的原因。
${hadoop.root}/build
hadoop-core-${version}.jar
${hadoop.root}
commons-cli-${commons-cli.version}.jar
${hadoop.root}/lib
<!-- <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" todir="${build.dir}/lib" verbose="true"/> <copy file="${hadoop.root}/lib/commons-configuration-${commons-configuration.version}.jar" todir="${build.dir}/lib" verbose="true"/> <copy file="${hadoop.root}/lib/commons-httpclient-${commons-httpclient.version}.jar" todir="${build.dir}/lib" verbose="true"/> <copy file="${hadoop.root}/lib/commons-lang-${commons-lang.version}.jar" todir="${build.dir}/lib" verbose="true"/> <copy file="${hadoop.root}/lib/jackson-core-asl-${jackson.version}.jar" todir="${build.dir}/lib" verbose="true"/> <copy file="${hadoop.root}/lib/jackson-mapper-asl-${jackson.version}.jar" todir="${build.dir}/lib" verbose="true"/>
修改${eclipse plugin src}/meta-inf/manifest.mf文件以适应对${eclipse plugin src}/build.xml所做的更改。
Bundle-ClassPath: classes/, lib/hadoop-core.jar, lib/commons-cli-1.2.jar, lib/commons-configuration-1.6.jar, lib/jackson-core-asl-1.8.8.jar, lib/commons-httpclient-3.0.1.jar, lib/jackson-mapper-asl-1.8.8.jar, lib/commons-lang-2.4.jar
在两个位置修改${hadoop.root}/src/contrib/build-contrib.xml文件。首先是设置插件编译所需的属性。第二是确保jar hadoop-core-1.0.4.jar ,在 ${hadoop.root} 文件夹对javac是可见的,因为eclipse插件引用了hadoop类。这种设置与前两种不同,因此不是可有可无的。
hadoop-core-1.0.4.jar
<!-- Properties added for compiling eclipse-plugin --> <!-- http://yiyujia.blogspot.com/2012/11/build-hadoop-eclipse-plugin-from-source.html --> <property name="eclipse.home" location="/Users/xuj/Downloads/eclipse/"/> <property name="version" value="1.0.4"/> <property name="commons-cli.version" value="1.2"/> <!-- the normal classpath --> <path id="contrib-classpath"> <fileset dir="${hadoop.root}"> <include name="*.jar" /> </fileset> <!-- more path elements go here --> </path>
正确配置所有文件后,从 ${eclipse-plugin-src}/ 在控制台中应足以容纳其余部分。
${eclipse-plugin-src}/
2条答案
按热度按时间t9eec4r01#
我昨天好不容易才为hadoop-1.0.4安装了eclipse插件,并成功地进行了测试。
插件不工作的原因是jar包丢失了一些lib:
commons-cli-1.2.jar
commons-configuration-1.6.jar
jackson-core-asl-1.8.8.jar文件
jackson-mapper-asl-1.8.8.jar
commons-httpclient-3.0.1.jar
commons-lang-2.4.jar
您可以将这个jar从${hadoop}/lib复制到${jar}/lib,并且不要忘记修改清单。
为了方便起见,我向${eclipse plugin src}/build.xml目标jar添加了一些代码
以及${eclipse plugin src}/meta-inf中修改的manifest.mf
重建eclipse插件,玩得开心!
4dbbbstv2#
好吧,结合hs3180的答案,这里是我在配置编译时实际做的。
在${eclipse plugin src}/build.xml中,使用以下指令包含eclipse插件所需的jar。注意这里,而不是从
${hadoop.root}/build
,复制hadoop-core-${version}.jar
现在来自${hadoop.root}
因为如果您使用的是hadoop的编译版本${hadoop.root}/build
文件夹实际上是空的。复制commons-cli-${commons-cli.version}.jar
现在来自${hadoop.root}/lib
出于同样的原因。修改${eclipse plugin src}/meta-inf/manifest.mf文件以适应对${eclipse plugin src}/build.xml所做的更改。
在两个位置修改${hadoop.root}/src/contrib/build-contrib.xml文件。首先是设置插件编译所需的属性。第二是确保jar
hadoop-core-1.0.4.jar
,在${hadoop.root}
文件夹对javac是可见的,因为eclipse插件引用了hadoop类。这种设置与前两种不同,因此不是可有可无的。正确配置所有文件后,从
${eclipse-plugin-src}/
在控制台中应足以容纳其余部分。