在使用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
》》点击应用即可,然后重新运行,就发现错误终于消失了。。。