-
Task
-
Resolution: Fixed
-
L3 - Default
-
7.11.0
-
None
7.11.0 uses MyBatis v3.4.4
in JDK 9+ this generates Illigal Reflective access warnings in the Logs.
WARNING: An illegal reflective access operation has occurred WARNING: Illegal reflective access by org.apache.ibatis.reflection.Reflector (file:/Users/pearces/.m2/repository/org/mybatis/mybatis/3.4.4/mybatis-3.4.4.jar) to method java.lang.Object.finalize() WARNING: Please consider reporting this to the maintainers of org.apache.ibatis.reflection.Reflector WARNING: All illegal access operations will be denied in a future release
This was fixed in the 3.5.0 release - https://github.com/mybatis/mybatis-3/issues/1156
However when manually excluding 3.4.4 and using the latest 3.5.2
I not longer get the error at startup, but during use I get a slightly different error
WARNING: An illegal reflective access operation has occurred WARNING: Illegal reflective access by org.apache.ibatis.ognl.OgnlRuntime (file:/Users/pearces/.m2/repository/org/mybatis/mybatis/3.5.2/mybatis-3.5.2.jar) to method java.util.Arrays$ArrayList.size() WARNING: Please consider reporting this to the maintainers of org.apache.ibatis.ognl.OgnlRuntime WARNING: All illegal access operations will be denied in a future release
this one is mentioned in the github issue https://github.com/mybatis/mybatis-3/issues/1586
and suggest you remove the parenthesis for the size() and other commands
I could reproduce the same error by writing someMapParam.keys.size(), someMapParam.keySet.size() or someMapParam.keySet().size() in an OGNL expression [1].
To avoid the warning, you just need to remove the parentheses after size (e.g. someMapParam.keys.size).