在使用Java API操作HBase時拋出如下異常:
Illegal reflective access by org.apache.hadoop.security.authentication.util.KerberosUtil (file:/C:/Users/RYJ/.m2/repository/org/apache/hadoop/hadoop-auth/2.6.5/hadoop-auth-2.6.5.jar) to method sun.security.krb5.Config.getInstance()
這個異常足足困了我一天,剛開始懷疑是代碼問題,最終發現是版本不匹配導致的。
首先我們搭建HBase一定要考慮兼容性問題,即哪個版本的HBase可以和什么版本的JDK匹配,以及可以和什么版本的Hadoop匹配。 我上一篇博客還總結了呢,搭建的時候就忽略了,這也就是學了不知道怎么用吧!汗! 以后實踐的時候一定要學會聯系學的東西,這樣才會避免走很多彎路,不然有數不盡的坑,你就栽吧,時間不允許你這么做的。好了,接下來說解決方案。
解決方法:以前用的JDK8 ,發現不匹配,然后降級為JDK7 就好了。
具體降級步驟:
1.首先登陸JAVA官網下載JDK7到本地
》》打開https://www.oracle.com/technetwork/java/javase/documentation/index.html
》》可以看到有如下版本
》》下載好后,右鍵項目->Build Path->Configure Build Path... 彈出如下內容,依次按照順序點擊
》》Next
》》點擊應用即可,然后重新運行,就發現錯誤終於消失了。。。