eclipse—如何克服hadoop中的java.lang.CompatibleClassChangeError

jutyujz0  于 2021-06-04  发布在  Hadoop
关注(0)|答案(1)|浏览(378)

我得到了不兼容的ClassChangeError::找到了接口org.apache.hadoop.mapreduce.taskattemptcontext,但需要类,

  1. Mainclass plugin:
  2. ==================
  3. <plugin>
  4. <groupId>org.apache.maven.plugins</groupId>
  5. <artifactId>maven-jar-plugin</artifactId>
  6. <version>2.4</version>
  7. <configuration>
  8. <archive>
  9. <manifest>
  10. <addClasspath>true</addClasspath>
  11. <classpathPrefix>lib/</classpathPrefix>
  12. <mainClass>com.calsoftlabs.ndt.PcapMain</mainClass>
  13. </manifest>
  14. </archive>
  15. </configuration>
  16. </plugin>
  17. shaded plugin:
  18. ============
  19. <plugin>
  20. <groupId>org.apache.maven.plugins</groupId>
  21. <artifactId>maven-shade-plugin</artifactId>
  22. <version>1.7.1</version>
  23. <executions>
  24. <execution>
  25. <phase>package</phase>
  26. <goals>
  27. <goal>shade</goal>
  28. </goals>
  29. <configuration>
  30. <artifactSet>
  31. signed jars
  32. <excludes>
  33. <exclude>bouncycastle:bcprov-jdk15</exclude>
  34. </excludes>
  35. </artifactSet>
  36. <transformers>
  37. <transformer
  38. implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
  39. Main class
  40. <mainClass>com.calsoftlabs.ndt.PcapMain</mainClass>
  41. </transformer>
  42. </transformers>
  43. </configuration>
  44. </execution>
  45. </executions>
  46. </plugin>

我得到了两个jar:1)original-pcapsample-0.0.1-snapshot.jar-->由于着色插件2)pcapsample-0.0.1-snapshot.jar-->由于主类插件
--->当我使用着色插件jar时,线程“main”java.lang.classnotfoundexception:pcap中出现异常
--->当我使用第二个jar时,我得到了不兼容的ClassChangeError
--->实际上,我正在尝试从这个url使用pcapinputformat类https://github.com/ripe-ncc/hadoop-pcap/blob/master/hadoop-pcap-lib/src/main/java/net/ripe/hadoop/pcap/io/pcapinputformat.java
--->我在pom.xml中添加了hadoop pcap lib(来自上面指定的url)依赖项,并尝试使用该pcapinputformat
--->我现在能做些什么来克服这个问题。有人能就这个问题提出建议吗。。。

sqserrrh

sqserrrh1#

TaskAttemptContext 从Hadoop1中的类更改为Hadoop2中的接口。很明显,您使用的jar是针对hadoop1api构建的,尽管他们声称相反,hadoop2对任何应用程序都不向后兼容,只对最简单的应用程序兼容。

相关问题