一、报错内容
在 install Maven项目时,控制台出现警告如下:
WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by org.apache.flink.api.java.ClosureCleaner (file:/D:/Users/xxx/.m2/repository/org/apache/flink/flink-core/1.12.0/flink-core-1.12.0.jar) to field java.util.Properties.serialVersionUID
WARNING: Please consider reporting this to the maintainers of org.apache.flink.api.java.ClosureCleaner
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release
二、报错说明
字面意思说的是发生的了一个非法的反射访问操作,在JDK 9之前 ,Java允许通过反射机制访问所有的成员,这些成员的类型包括私有(private),公共(public),包(< package >)和受保护(protected)。
JDK9新增了模块系统之后, 对反射行为做出了一定的限制。即对于非公有的成员、成员方法和构造方法,模块不能通过反射直接去访问,但是JDK9提供了一个可选的修饰符open来声明一个开放模块,可以从一个开放模块中导出所有的包,以便在运行时对该模块中的所有包中的所有类型进行深层反射来访问。
在JDK9中,Java运行时由一个一个的模块组成。基于旧版本JDK开发的第三方jar包在迁移到JDK9时无法被转换成为模块,但是可以将其放在类路径下,被加载成为一个unnamed标识的模块,如果该模块存在被使用的需求,则会被放置在模块路径上,被加载后用作自动模块,进而被系统依赖使用。
三、报错解决
将JDK切换成旧版本的即可。
(我这里使用的是JDK11出现了这个问题,将JDK11降级成JDK8之后警告就消失了)
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
</properties>
四、参考文章
【异常】An illegal reflective access operation has occurred警告
【项目实战】Java9的新特性模块化(Module)文章来源:https://www.toymoban.com/news/detail-699825.html
An illegal reflective access operation has occurred警告文章来源地址https://www.toymoban.com/news/detail-699825.html
到了这里,关于【异常】IDEA提示An illegal reflective access operation has occurred警告的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!