Illegal reflective access by org.apache.hadoop.security.auth

时间:2022-06-02 22:05:38

在使用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()

Illegal reflective access by org.apache.hadoop.security.auth

这个异常足足困了我一天,刚开始怀疑是代码问题,最终发现是版本不匹配导致的。

首先我们搭建HBase一定要考虑兼容性问题,即哪个版本的HBase可以和什么版本的JDK匹配,以及可以和什么版本的Hadoop匹配。 我上一篇博客还总结了呢,搭建的时候就忽略了,这也就是学了不知道怎么用吧!汗!  以后实践的时候一定要学会联系学的东西,这样才会避免走很多弯路,不然有数不尽的坑,你就栽吧,时间不允许你这么做的。好了,接下来说解决方案。

解决方法:以前用的JDK8 ,发现不匹配,然后降级为JDK7 就好了。

具体降级步骤:

1.首先登陆JAVA官网下载JDK7到本地

  》》打开https://www.oracle.com/technetwork/java/javase/documentation/index.html

   Illegal reflective access by org.apache.hadoop.security.auth

 》》可以看到有如下版本

Illegal reflective access by org.apache.hadoop.security.auth

  》》下载好后,右键项目->Build Path->Configure Build Path... 弹出如下内容,依次按照顺序点击

Illegal reflective access by org.apache.hadoop.security.auth

 》》Next

 Illegal reflective access by org.apache.hadoop.security.auth

  》》点击应用即可,然后重新运行,就发现错误终于消失了。。。

Illegal reflective access by org.apache.hadoop.security.auth