我是地图缩减程序的初学者,在运行该程序时,我遇到了以下错误:
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文件?
另一个原因是同时使用谷歌收藏和番石榴。因此,我看到了以下堆栈竞争:
[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集合以避免冲突;
要查看类加载,请使用-XX:+TraceClassLoading JVM选项
这是一个延迟响应,但我实际上遇到了同样的问题,所以我想我应该提出我的解决方案来避免这种情况: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。
当然,你的问题可能会有所不同,但我仍然希望这能有所帮助。