有没有人知道为什么以前可以工作的东西突然出现这个错误?请帮帮忙
java.lang.NoSuchMethodError: org.apache.hadoop.mapred.Counters.findCounter(Ljava/lang/Enum;)Lorg/apache/hadoop/mapreduce/Counter;
at edu.umn.cs.spatialHadoop.operations.Sampler.sampleMapReduceWithRatio(Sampler.java:214)
at edu.umn.cs.spatialHadoop.operations.Sampler.sample(Sampler.java:543)
at edu.umn.cs.spatialHadoop.operations.Repartition.packInRectangles(Repartition.java:494)
at edu.umn.cs.spatialHadoop.operations.Repartition.packInRectangles(Repartition.java:463)
at edu.umn.cs.spatialHadoop.operations.Repartition.repartitionLocal(Repartition.java:590)这在早些时候是有效的,但是突然出现了这个错误。我使用的是hadoop版本1.2.1
发布于 2015-04-30 23:57:31
从org/apache/hadoop/mapreduce/Counter中,我猜hadoop-mapreduce-client-core.jar丢失了
发布于 2015-05-01 00:12:47
hadoop-mapreduce-client-core.jar中包含Counter类。你一定是以某种方式降低了它的等级。
如果你正在使用一个构建工具(maven,gradle...),检查你的依赖关系,确保它们没有改变。如有疑问,请使用最新版本。
否则,请转到您的hadoop-mapreduce-client-core.jar并检查该方法是否在内部,或者只是在您的项目中获得一个更新的版本来替换它。
发布于 2015-05-01 00:40:22
这是因为应用程序中可用的最新编译类和依赖jar的版本不同。例如:让A类用依赖的jar X编译,然后用依赖的jar X1在不同的环境中编译相同的A类,其中包含名为Y的新方法。现在类将被编译,因为新的方法Y在jar X1中可用,当在jar X的环境中使用相同的类A时,当试图在类内存中加载类时,它会导致NoSuchMethod异常。Classloader先验证依赖类,然后再将类加载到类内存中,然后再调用真正的exceution。
https://stackoverflow.com/questions/29972297
复制相似问题