mapreduce程序中的错误:线程“main”java.lang.VerifyError中的异常

时间:2013-09-03 09:45:00

标签: java eclipse hadoop mapreduce

我是map reduce程序的初学者,在运行程序时我遇到了这个错误:

    Exception in thread "main" java.lang.VerifyError: (class: com/google/common/collect
/Interners, method: newWeakInterner signature: ()Lcom/google/common/collect/Interner;) Incompatible argument to function

错误是什么以及要包含哪个jar文件?

2 个答案:

答案 0 :(得分:2)

另一个原因是同时使用google-collections和guava。结果,我看到以下stacktrace:

[Loaded com.google.common.collect.Interners from file:/var/lib/tomcat6-crm/webapps/ROOT/WEB-INF/lib/**guava**-11.0.2.jar]
[Loaded com.google.common.base.Function from file:/var/lib/tomcat6-crm/webapps/ROOT/WEB-INF/lib/**google-collections**-1.0.jar]
[Loaded com.google.common.collect.GenericMapMaker from file:/var/lib/tomcat6-crm/webapps/ROOT/WEB-INF/lib/guava-11.0.2.jar]
[Loaded com.google.common.collect.MapMaker from file:/var/lib/tomcat6-crm/webapps/ROOT/WEB-INF/lib/google-collections-1.0.jar]

从依赖关系树中排除google-collection以避免冲突;

要查看类加载,请使用-XX:+ TraceClassLoading JVM选项

答案 1 :(得分:1)

这是一个迟到的回复,但实际上遇到了同样的问题所以我认为我会采取我的解决方案来避免这种情况:http://xkcd.com/979/

在我的情况下,事实上我的pom中存在错误的依赖性。 我运行cloudera并尝试使用标准的jdbc客户端进行连接。

要连接到cdh,请使用其中列出的依赖项: http://www.cloudera.com/content/cloudera-content/cloudera-docs/CDH4/4.2.0/CDH4-Installation-Guide/cdh4ig_topic_31.html

或您使用的任何版本的cloudera

因此,客户端的依赖关系应如下所示:

    <dependency>
        <groupId>org.apache.hadoop</groupId>
        <artifactId>hadoop-client</artifactId>
        <version>2.0.0-mr1-cdh4.0.0</version>
    </dependency>

而不是:

    <dependency>
        <groupId>org.apache.hadoop</groupId>
        <artifactId>hadoop-client</artifactId>
        <version>2.2.0</version>
    </dependency>

另外,要注意hadoop运行的种类,YARN或mr1。

当然你的问题可能会有所不同,但我仍然希望这会有所帮助。