2014年12月16日 星期二

java.lang.NoSuchMethodError: org.apache.hadoop.conf.Configuration.addDeprecations

這個錯誤訊息是因為不同的 Hadoop 版本所造成的

主要是因為 org.apache.hadoop.conf.Configuration 這個類別在 Hadoop 2.3 之後

新增了一個方法(method) addDeprecations

出現這個問題就有可能代表你的環境內有 Hadoop 2.3 的 jar 以及比 2.3 還早的 jar 


我會遇到這個問題是因為

我的專案本身透過 Maven 引入 Hadoop 2.3 的 package

另外也相依了 solr-core 4.1.0 這個 package

剛好 solr-core 4.1.0 它有相依 Hadoop 某些 jar,但卻是 Hadoop 2.2 的

可以在 Solr-core 4.1.0 maven repository 內看到,如下圖









所以導致這樣的問題

解法部外乎就是把你專案本身的 Hadoop 2.3 降到 2.2

或是在 Maven 中用 exclusion 標籤排除掉以上那 4 個 jar