报错 WARNING: Illegal reflective access by org.apache.ibatis.reflection.Reflector

原因:mybatis使用部分反射api时,高版本的jdk报出了警告。

在jdk1.8环境下运行应该是不会有这个警告的。但如果还是出现这个警告,则可以检查下项目运行时用的是不是自己安装的jdk。

idea默认情况下用的是它自己的jdk,而非用户自己安装的jdk。

如果需要切换自己安装的jdk,则按照下面的操作:

右上角File  ————>  Project Structure

修改下SDK路径

 

 顺便检查下Module模块的语法检查等级是不是也是jdk1.8

 右下角点击 apply  ok 后,重启项目,警告就消失了。

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 这是一个警告信息,意思是使用了不安全的反射方式访问了 org.apache.ibatis.reflection.reflector 类。这种方式可能会导致程序出现不可预测的行为,因此应该尽量避免使用。建议检查代码中是否存在使用反射的地方,并尽可能使用更安全的方式进行访问。 ### 回答2: org.apache.ibatis.reflection.reflector是MyBatis框架中的一个反射工具类,可以实现获取指定类的字段、方法等信息的功能。然而,在一些JDK版本中,由于JDK的安全机制加强,会出现“illegal reflective access”的警告信息,提示org.apache.ibatis.reflection.reflector在获取字段信息时使用了不允许的反射访问方式。 这个警告信息的原因是在JDK9开始,对反射机制有了限制,只允许通过类继承、实现接口或者通过运行时的权限等方式进行反射访问。而使用反射可以绕过Java语言本身的访问权限控制,存在安全隐患。因此,在JDK11中,Java规范中开始强制限制了反射方式的使用,只允许使用特定的反射API访问字段、方法等信息。 在MyBatis框架使用反射工具类时,如果使用了不允许的反射方式,就有可能出现“illegal reflective access”警告信息。这个问题可以通过升级MyBatis框架版本来解决。例如,升级到MyBatis 3.5.7版本及以上,就可以避免出现这个问题,因为MyBatis已经使用了允许的反射API来访问字段、方法等信息。 除了升级框架版本,还可以通过修改JVM参数来关闭反射访问检查,但这样会降低应用程序的安全性,不建议使用。如果确实需要绕过JDK的反射限制,可以使用Java.lang.reflect.AccessibleObject类提供的setAccessible方法进行反射访问,但需要注意,这样做有可能导致应用程序安全隐患,应慎重考虑。 ### 回答3: org.apache.ibatis.reflection.reflector是MyBatis框架中的一个类,它在执行反射操作时可能会出现“illegal reflective access”的警告信息。 这个警告信息的本质是Java 9引入的一个新特性,称为“模块化”。在Java 9之前,Java程序的所有类都处于同一个“类路径”下,可以随意访问和使用。但是,随着Java应用程序的逐渐复杂化和庞大化,这种无限制的访问方式逐渐体现出一些问题,比如安全性和性能问题。 因此,Java 9引入了模块化的概念,以将Java程序拆分成若干个不同的模块,每个模块有自己的类路径和访问规则。这样,不同的模块之间就可以实现相互隔离,同时提高了运行效率和安全性。 但是,由于许多Java应用程序都是在Java 8或更早版本上开发的,这些应用程序并没有采用模块化的机制。对于这些应用程序,在Java 9或更高版本上运行时,如果试图访问其他模块的私有API,就会导致“illegal reflective access”的警告信息。 在MyBatis框架中,org.apache.ibatis.reflection.reflector类可能在执行反射操作时访问了其他模块的私有API,导致了这个警告信息的出现。虽然该警告不会影响程序的正常运行,但为了避免潜在的安全和性能问题,建议使用最新版本的MyBatis框架,以支持Java 9及以上的模块化特性,从而避免这个警告信息的出现。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值