An illegal reflective access operation has occurred警告

老卫带你学---pyspark运行报错 最近老卫在玩spark,安装完pyspark之后(pyspark=2.3.2;python=3.7.0) 可是在运行代码的时候出现了如下报错: WARNING: An illegal reflective access operation has occurred WARNING: Illegal reflective access by org.apache.hadoop.security.au... 阅读详情

问题描述

今天 在 install Maven项目的时候,控制台出现警告如下:

WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by com.thoughtworks.xstream.core.util.Fields (file:/E:/DevelopmentKit/Maven/install-location/apache-maven-3.8.1-bin/localRepository/com/thoughtworks/xstream/xstream/1.3.1/xstream-1.3.1.jar) to field java.util.Properties.defaults
WARNING: Please consider reporting this to the maintainers of com.thoughtworks.xstream.core.util.Fields
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

字面意思说的是发生的了一个非法的反射访问操作,警告发生的地方是:

 从com.thoughtworks.xstream.core.util.Fields (file:/E:/DevelopmentKit/Maven/install-location/apache-maven-3.8.1-bin/localRepository/com/thoughtworks/xstream/xstream/1.3.1/xstream-1.3.1.jar) 到 field java.util.Properties.defaults存在非法的反射访问。

问题分析

想了很久也没有弄明白是什么原因导致了控制台输出了这个警告,后面在网上查了查资料,发现是这么一回事:在JDK 9之前 ,Java允许通过反射机制访问所有的成员,这些成员的类型包括私有(private),公共(public),包(< package >)和受保护(protected)。JDK9新增的功能之一 —— 模块系统对反射的行为做出了一定的限制。

从JDK9开始,对于非公有的成员、成员方法和构造方法,模块不能通过反射直接去访问,但是JDK9提供了一个可选的修饰符open来声明一个开放模块,可以从一个开放模块中导出所有的包,以便在运行时对该模块中的所有包中的所有类型进行深层反射来访问。

在JDK9中,Java运行时由一个一个的模块组成。基于旧版本JDK开发的第三方jar包在迁移到JDK9时无法被转换成为模块,但是可以将其放在类路径下,被加载成为一个unnamed标识的模块,如果该模块存在被使用的需求,则会被放置在模块路径上,被加载后用作自动模块,进而被系统依赖使用。

问题解决

从上面的分析可以知道,处理该警告的解决方法主要存在以下两种:
方案一:将JDK切换成旧版本的。(我这里使用的是JDK11出现了这个问题,将JDK11降级成JDK8之后警告就消失了)

具体操作:
1.打开项目结构
2.做出以下修改。
在这里插入图片描述
在这里插入图片描述
3.点击保存

方案二:使用 --illegal-access 参数

其实这个参数在控制台输出的信息中已经给出了,如下

WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations

其常用的参数值如下:

  • permit 默认行为,允许通过反射进行访问。当第一次尝试通过反射进行非法访问时会生成一个警告,之后不会再进行警告。

  • warn 与permit相同,但每次非法访问时都会产生警告。其大致等效于 “–permit-illegal-access”。

  • debug 每次非法访问产生警告的同时打印非法访问的堆栈跟踪信息。

  • deny 不允许所有的非法访问操作,除了启用其它命令行参数排除的模块,例如"–add-opens",这个参数可以参数将某些模块排除出来,让它们能够通过非法反射进行访问。

为了消除警告并继续使用需要进行非法访问的模块,可以将参数 --illegal-access的值设置为deny并使用一个或多个`–add opens 来打开对应的模块允许对其进行非法反射访问。

具体的做法如下:

①点击settings 并打开到如下的页面。
在这里插入图片描述
②修改完成后点击OK。

要注意的是 :

参数 --add-opens  java.base/java.base模块内的jar包名 = ALL-UNNAMED 

java.base模块内的jar包有很多,比如java.lang、java.util等等
具体包括哪些,可以参考这篇博客:https://blog.youkuaiyun.com/ixiaoyang/article/details/103814792

笔者根据控制台的警告信息,在"java.base模块内的jar包名"处填写的是 java.util.Properties.defaults包在java.base模块内对应的jar包,即 java.util包(感觉这样会比较保险),当然填写其他的好像也可以(前提是在java.base模块内,但是没弄懂具体是什么回事)。.

如果指定的包不在java.base模块内,控制台会输出如下的警告:
在这里插入图片描述

参考:

[1]http://mail.openjdk.java.net/pipermail/jigsaw-dev/2017-June/012841.html
[2]https://www.cnblogs.com/lujiango/p/7852120.html

【异常】IDEA提示An illegal reflective access operation has occurred警告 即对于非公有的成员、成员方法和构造方法,模块不能通过反射直接去访问,但是JDK9提供了一个可选的修饰符open来声明一个开放模块,可以从一个开放模块中导出所有的包,以便在运行时对该模块中的所有包中的所有类型进行深层反射来访问。在JDK9中,Java运行时由一个一个的模块组成。基于旧版本JDK开发的第三方jar包在迁移到JDK9时无法被转换成为模块,但是可以将其放在类路径下,被加载成为一个unnamed标识的模块,如果该模块存在被使用的需求,则会被放置在模块路径上,被加载后用作自动模块,进而被系统依赖使用。 阅读详情

相关推荐

SpringBoot集成XXL-Job启动报非法反射WARNING: An illegal reflective access operation has occurred

1、排除 xxl-job 中的 groovy 重新引入即可。xxl-job-core版本:2.3.1。1、是 groovy 依赖的版本导致。

hkl_Forever的博客 921

解决警告:An illegal reflective access operation has occurred

Intellij 取消自动显示参数含义

哈 2628

聚类技术:发展历史、主要分类与重要论文解析

在数据挖掘和机器学习的广袤领域中,聚类作为一种强大的无监督学习技术,一直扮演着至关重要的角色。它能够帮助我们从海量的数据中发现隐藏的模式和结构,将相似的数据对象归为一类,从而为进一步的分析和决策提供有价值的信息。

qq_48131648的博客 2630

idea控制台出现An illegal reflective access operation has occurred警告,解决方案如下,不喜勿喷,仅供参考

*警告如下图所示,该警告是因为jdk版本太高(我用的是JDK12.0.2),具体的原理还没有研究,它是不影响项目的正常运行,只是看着有点不舒服~~~~* 解决方案一: 把项目jdk降低到1.8及以下,建议1.8。 快捷键Ctrl+Alt+Shift+S 进入项目结构设置如下图所示,我自己没有下载1.8,你们自己下一个1.8版本的JDK然后按下图所示更改选择就可以了 如果上述方法还没有解决,那请在...

weixin_45047093的博客 6005

西南交通大学车辆工程专业大四上车辆综合实训ame仿真部分

西南交通大学车辆工程专业大四上车辆综合实训ame仿真建模部分

qq_64814052的博客 1245

stm32最小系统_完成一个最小FOC矢量控制系统所需的基本模块和功能配置

当我们读懂 FOC 矢量控制的基本原理之后,便迫不及待的想动手尝试,去实现一个矢量控制系统,让电机先转起来,有一个直观的感受。因此,我们需要设计实现一个矢量控制的最小系统,具备矢量控制的基本功能,满足电机矢量运行的基本条件。首先,看一下矢量控制的基本架构:矢量控制架构如上图所描述,矢量控制系统包括实时电流的采集、clarke 变换、park 变换、SVPWM 、实时角度的反馈和计算以及电流环和速...

weixin_39524048的博客 1784

MyBatis警告: WARNING: An illegal reflective access operation has occurred

MyBatis警告: WARNING: An illegal reflective access operation has occurred 警告描述 WARNING: An illegal reflective access operation has occurred WARNING: Illegal reflective access by org.apache.ibatis.reflection.Reflector (file:/C:/Users/XXX/.m2/repository/org/my

Wu_yongtao的博客 5786

COMSOL相场法模拟枝晶生长:溶质偏析模型搭建全流程

凝固过程中枝晶形貌与溶质偏析直接决定铸件微观组织与力学性能,是材料加工领域长期关注的核心问题。相场法凭借弥散界面描述天然处理拓扑演化,成为模拟枝晶生长的主流数值方法,而通用有限元平台COMSOL为自定义偏微分方程求解提供了高度灵活的实现路径。从热力学驱动、界面各向异性到溶质再分配,模型需准确耦合相场方程与浓度扩散方程,才能在二元合金凝固模拟中还原真实枝晶尖端速度、二次臂形貌及界面富集行为。围绕溶质偏析这一关键变量,建模过程涉及无量纲化参数标定、反溶质截留项配置、分离式求解器与网格各向异性控制等核心细节。该方

weixin_30402231的博客 308

SprinfBoot报警告WARNING: An illegal reflective access operation has occurred

警告如图所示,该警告是因为jdk版本太高(我用的是10.0,据说9.0的也会这样),具体的原理还没有研究,它不影响项目的正常运行,但是看着很糟心有木有~~~~ 解决方案是把项目jdk降低到1.8及以下,建议1.8。 操作步骤: 快捷键Ctrl+Alt+Shift+S 进入项目结构设置如图 修改为1.8  然后确认即可。 如果上述方法还没有解决,那请在上图中打开Modules,然后...

冰公主我女神 的博客 17万+

Android SELinux——neverallow问题处理(十六)

遇到 neverallow 规则问题,千万别急着去注释/剔除里面原有的规则(原生的尽量别动)。增加 allow 规则是常见的解决办法,但是随着 android 版本的升级,系统对 SELinux 的管控越来越严,增加了大量的 neverallow。一般情况下,向默认标签授予权限的做法是错误的,其中许多权限都是 neverallow 规则所不允许的。按照上面方法去添加 SELinux 可能会违反了 neverallow 规则,编译时候会报 neverallow 相关的错误。

小旭的专栏 2677

【PyGIS】ERA5降雨蒸散发数据预处理

ERA5-LAND降雨蒸散发数据预处理

```On Earth, Be Water, By Coding``` 3145

Java 的非法反射警告 An illegal reflective access operation has occurred

最近使用 MyBatis-Plus 框架,在执行 SQL 查询的时候控制台日志提示了该警告信息,并且只有首次执行的时候才提示,同样的方法再次调用则不会提示,我用的 JDK11。下面转载一篇文章,解决了这个问题。 反射是一项相当强大的特性,不仅在各类框架中被广泛应用,即使是在日常开发中我们也隔三差五得要和它打交道。然而在 JDK9 中 JDK 对反射加上了一些限制,需要注意。 考虑有如下的代码: import java.lang.reflect.Field; import java.util.ArrayLi

一线大码 3万+

突破Cloudflare 5秒盾!Python爬虫+GPT分析JS混淆实战(附完整代码)

这篇文章的核心观点其实不是“怎么过CF”,而是如何把LLM嵌入逆向工程的工作流。AI不会取代逆向工程师,但它正在重新定义逆向工程师的工作方式。过去我们80%的时间花在读懂混淆代码上,现在这部分可以外包给GPT,我们把精力集中在架构判断、异常处理和系统设计这些真正需要人类直觉的地方。技术会变,CF的防护会升级,GPT的能力也会迭代。但这种“人机协作拆解复杂问题”的方法论,比任何具体的绕过技巧都更有长期价值。参考资料Cloudflare Bot Management官方文档。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 535

报错:Spring Boot出现警告 WARNING: An illegal reflective access operation has occurred

Spring Boot出现警告 WARNING: An illegal reflective access operation has occurred 解决方法:在jvm参数上添加:–illegal-access=deny

你今天真好看呀 842

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

【Java异常】Spring Boot出现警告 WARNING: An illegal reflective access operation has occurred

本文目录 一、背景描述 二、报错信息 三、报错原因 四、解决方案 4.1 方案1:添加jvm option配置信息 4.2 方案2:降低jdk版本 一、背景描述 公司的项目最近在做微服务改造,每块业务单独建一个服务,服务与服务之间相互调用。 项目背景:JDK(9)+ Spring Boot(v2.1.5.RELEASE) 二、报错信息 如下图所示,虽说不影响运行吧,但是有了这报警信息总感觉很碍眼,所以还是把这个问题解决心理才好。 WARNING: An illegal refl

No8g攻城狮的博客 2万+

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

测试时出现警告:WARNING: An illegal reflective access operation has occurred WARNING: Illegal reflective acc

Java测试时出现警告:WARNING: An illegal reflective access operation has occurred WARNING: All illegal access operations will be denied in a future release

Alomed的博客 1万+

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Spring Boot 警告:An illegal reflective access operation has occurred

这两天在尝试做微服务的项目时,遇到些小问题。

n1cegood的博客 1251

powermock 警告 WARNING: An illegal reflective access operation has occurred

powermock 警告:发生了非法的反射访问操作的处理。 WARNING: An illegal reflective access operation has occurred WARNING: Illegal reflective access by org.powermock.reflect.internal.WhiteboxImpl。

白衣若尘的博客 1604

忽略非法反射警告 An illegal reflective access operation has occurred

原文链接

二十一克阳光!的博客 763

IDEA 启动项目警告WARNING: An illegal reflective access operation has occurred

貌似是jdk版本不兼容但是我已经是用的JDK11 启动时添加一个方法就可以去除讨厌的警告 WARNING: An illegal reflective access operation has occurred /** * 去除Warning */ public static void disableWarning() { try { ...

XUEXIhappy001的博客 1468
上一篇: 【软件架构】
下一篇: 【Failed to execute goal org.apache.maven.plugins:maven-war-plugin:2.2】
lijian_365
博客等级 码龄7年 9粉丝 14原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值