Eclipse:令人困惑的添加到Build Path选项

时间:2014-09-12 09:16:28

标签: eclipse maven hadoop jar avro

我不是一个“真正的”开发者,但我有权至少编写一些代码,并在Eclipse构建路径中添加一些Jars,而不花费数小时试图弄清楚Jars是否实际上在Build中路径。

我的问题(下面的错误)通过添加正确的Jars来解决问题[NoClassDefFoundError, cannot run MapReduceColorCount (Avro 1.7.7)

    [cloudera@localhost ~]$ hadoop jar avroColorCount.jar exos.MapReduceColorCount2 inavro01 outavro01
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/avro/mapreduce/AvroKeyInputFormat
    at exos.MapReduceColorCount2.run(MapReduceColorCount2.java:71)
    at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70)
    at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:84)
    at exos.MapReduceColorCount2.main(MapReduceColorCount2.java:86)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at org.apache.hadoop.util.RunJar.main(RunJar.java:212)

以下是我尝试将Jars添加到构建路径的不同方法:

1。 Maven :通过POM文件添加依赖项,它们随后出现在“Maven Dependencies”下。

2。 “配置构建路径”:Jars实际上位于我的本地文件系统中,因此我添加了(库)文件夹,文件夹显示在“Referenced Libraries”下。

第3。在项目文件夹中创建一个“lib”文件夹,复制/粘贴Jars(位于我的本地文件系统中),执行一个项目Refresh(lib文件夹出现在Package Explorer中),选择所有Jars和right-单击“添加到构建路径”

我确认我的代码在执行任一方法时都没有显示警告/错误。我通常使用Jar文件的“Export ...”来执行它。

示例:我已尝试从Cloudera的CDH5(Hadoop 2.3.0-cdh5.1.2和Avro 1.7.5-cdh5.1.2)添加Build Path外部JAR,这些内容在本地本地位于/ opt / lib

真正有效的唯一方法是方法3 。为什么它不适用于方法1.或2.?

提前感谢您的支持

1 个答案:

答案 0 :(得分:0)

我无法通过方法3重现成功。我收到了一个"无法转换为namespace.customClass"错误而不是" NoClassDefFoundError"错误。

我找到了后一个错误的答案,其解决方法基于两个变量导出:

export LIBJARS = avrojar1,avrojar2,jar3

export HADOOP_CLASSPATH = avrojar1:avrojar2:jar3

然后使用-libjars $ {LIBJARS}运行hadoop jar命令。 分别用方法1和方法3测试。

我的结论是,我的案例仅针对与avro相关的Jars

由于

相关问题