Ich benutze hadoop-2.7.2
und ich habe eine MapReduceJob mit IntelliJ. In meinem Job benutze ich apache.commons.cli-1.3.1
und ich lege die lib in das Glas.Hadoop NoSuchMethodError apache.commons.cli
Als ich die MapReduceJob auf meinem Hadoop-Cluster verwenden Ich habe eine NoSuchMethodError
:
Exception in thread "main" java.lang.NoSuchMethodError: org.apache.commons.cli.Option.builder(Ljava/lang/String;)Lorg/apache/commons/cli/Option$Builder;
Ich verstehe nicht, weil die Methode in der Klasse vorhanden Option
und die Klasse Option
vom commons-cli.jar
meiner Anwendung extrahiert Krug. Außerdem habe ich dieses Problem nicht mit meinen anderen Bibliotheken.
Vielen Dank für Ihre Zeit.
Ich habe gerade festgestellt, dass hadoop commons-CLi 1.2 verwendet. Ich denke, das ist die Ursache meines Problems, aber ich weiß nicht, wie ich es beheben soll. – Antonin
Sie können versuchen, 'commons-cli-1.2' von der Hadoop-Abhängigkeit in Ihrer' pom.xml' auszuschließen, dann verwendet Hadoop Ihre 'commons-cli-1.3.1'. Wenn es zu Fehlern kommt, sollten Sie besser '1.2' in Ihrem Code verwenden. –
Ich habe so etwas gemacht, aber mein Chef will das nicht, weil es das Problem nicht behebt. Wenn wir das gleiche Problem später mit einer anderen Lib haben, möchte er das Problem nicht noch einmal beheben. Aber danke für Ihren Rat. – Antonin