An illegal reflective access operation has occurred警告

news2024/12/30 0:07:07

问题描述
今天 在 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存在非法的反射访问。
1
问题分析
想了很久也没有弄明白是什么原因导致了控制台输出了这个警告,后面在网上查了查资料,发现是这么一回事:在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 
1
java.base模块内的jar包有很多,比如java.lang、java.util等等
具体包括哪些,可以参考这篇博客:https://blog.csdn.net/ixiaoyang/article/details/103814792

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

如果指定的包不在java.base模块内,控制台会输出如下的警告:
 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/582967.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【送书福利-第六期】Java诞生日,推荐Java“此生错过必遗憾”系列书单

大家好&#xff0c;我是洲洲&#xff0c;欢迎关注&#xff0c;一个爱听周杰伦的程序员。关注公众号【程序员洲洲】即可获得10G学习资料、面试笔记、大厂独家学习体系路线等…还可以加入技术交流群欢迎大家在CSDN后台私信我&#xff01; 本文目录 一、前言二、推荐书籍三、抽奖方…

三维电子沙盘虚拟数字沙盘开发教程第9课

三维电子沙盘虚拟数字沙盘开发教程第9课 查询面板调用&#xff1a; private void Button_Click_11(object sender, RoutedEventArgs e) { GisLib.MapSech _Sech new MapSech(); //查询面板 Root.Children.Add(_Sech); Canvas.Se…

docker可视化管理工具portainer忘记密码重置教程

目录 前言&#xff1a; 1 停止portainer容器 2 借助仓库 portainer/helper-reset-password 重置密码 3 重新启动portainer容器 4 验证是否修改成功 5 修改登录密码 前言&#xff1a; 由于学习的深入&#xff0c;各种账号密码实在是太多了&#xff0c;建议各位配置账号密…

python+django在线借阅图书管理系统vue

本论文是以构建图书借阅为目标&#xff0c;使用 django框架制作&#xff0c;由系统前台、读者和管理员三大部分组成。着重论述了系统设计分析&#xff0c;系统的实现&#xff08;读者注册模块&#xff0c;读者登录&#xff0c;读者浏览图书模块&#xff0c;图书借阅模块&#…

keepalived脑裂后,近20min不能访问虚拟IP问题分析

问题现象和说明 真实的场景比较复杂&#xff0c;抽象起来可以用下面的图表示&#xff0c; #mermaid-svg-OmKwPLsGwcVuYnha {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-OmKwPLsGwcVuYnha .error-icon{fill:#5522…

充分发挥C/C++test的价值(上)

对于开发测试来说&#xff0c;最有效的环境就是能够深度集成到开发人员IDE中的统一测试解决方案。例如&#xff0c;团队可能会将测试工作集中在最近更新的、高风险的代码上&#xff0c;而Parasoft C/Ctest这样的集成工具就是最合适的解决方案。 软件验证和确认&#xff08;Ver…

Vulkan Tutorial 5 顶点缓冲区

目录 16 顶点缓冲区 顶点着色器 顶点数据 管道顶点输入 17 顶点缓冲区创建 缓冲区创建 内存要求 内存分配 填充顶点缓冲区 18 暂存缓冲区 传输队列 使用暂存缓冲区 19 索引缓冲区 索引缓冲区创建 使用索引缓冲区 16 顶点缓冲区 我们将用内存中的顶点缓冲区替换…

vue-admin-template框架搭建及应用

一、框架介绍 vue-admin-template是基于vue-element-admin的一套后台管理系统基础模板&#xff08;最少精简版&#xff09;&#xff0c;可作为模板进行二次开发&#xff1b; 可以把 vue-element-admin当做工具箱或者集成方案仓库&#xff0c;在 vue-admin-template 的基础上进…

FPGA基于AXI 1G/2.5G Ethernet Subsystem实现千兆UDP通信 提供工程源码和技术支持

目录 1、前言2、我这里已有的UDP方案3、详细设计方案传统UDP网络通信方案本方案详细设计说明UDP层设计AXIS-FIFOAXI 1G/2.5G Ethernet Subsystem&#xff1a;输出 4、vivado工程详解5、上板调试验证并演示系统配置UDP数据回环测试注意事项 6、福利&#xff1a;工程代码的获取 1…

SpringMVC第七阶段:SpringMVC的增删改查(01)

SpringMVC的增删改查 1、准备单表的数据库 drop database if exists springmvc;create database springmvc;use springmvc; ##创建图书表 create table t_book(id int(11) primary key auto_increment, ## 主键name varchar(50) not null, ## 书名 author varchar(50) no…

敏捷缺陷「bug」跟踪管理

一般情况下&#xff0c;当前迭代的缺陷&#xff0c;建议放到本迭代的迭代看板上&#xff0c;在迭代结束前修复完成。 “缺陷看板”通常存放发布后遗留的缺陷&#xff0c;客户反馈的缺陷&#xff0c;生产环境发现的缺陷等。 在Leangoo领歌的敏捷项目中&#xff0c;默认创建了“…

安科瑞能源管理系统基于物联网技术应用

安科瑞 徐浩竣 江苏安科瑞电器制造有限公司 zx acrelxhj 摘 要:在能源形势紧张的大趋势下,高能耗的大型公共建筑能源管理系统的建设逐渐受到重视,以物联网技术及基础的建筑能源管理平台可以提供即时、准确、高效的能源管理策略。 系统阐述了结合物联网技术的建筑能源管理构建…

关于自动映射在项目中的具体落地(dozer)

关于自动映射在项目中的具体落地&#xff08;dozer&#xff09; 项目开发过程中&#xff0c;经常需要编写model之间的转换&#xff0c;最常见的有&#xff1a; 实体转DTODTO转实体 等操作,故为了简化代码的开发工作&#xff0c;需要简化对象属性之间复制的步骤&#xff0c;目…

分类、标签设计及查询优化

文章目录 问题分类和标签的设计知名开源系统的设计jive论坛Solo博客系统的设计wordpress的数据库设计 参考链接 问题 在很多业务系统中&#xff0c;都有对对象的分类和标签设计。在数据库层面如何设计相应的表&#xff0c;以及如何做查询优化&#xff0c;是一个比较普遍的问题…

MKS SERVO4257D 闭环步进电机_系列5 CAN指令说明

第1部分 产品介绍 MKS SERVO 28D/35D/42D/57D 系列闭环步进电机是创客基地为满足市场需求而自主研发的一款产品。具备脉冲接口和RS485/CAN串行接口&#xff0c;支持MODBUS-RTU通讯协议&#xff0c;内置高效FOC矢量算法&#xff0c;采用高精度编码器&#xff0c;通过位置反馈&am…

客户案例 | 思腾合力GPU算力节点助力实时云渲染

客户介绍 平行云是国内领先的云化XR概念倡导者与技术先行者&#xff0c;LarkXR是平行云研发的云化XR PaaS平台。LarkXR能够帮助XR领域企业级客户快速实现技术、产品及平台的云化转型&#xff0c;高效使能企业的云化XR业务&#xff0c;有效保护客户的内容安全&#xff0c;让多种…

ANDEAWELL:国产工业RFID替代潮即将到来!

受这两年国外的芯片供应不足&#xff0c;价格上涨后用户难以承受等影响&#xff0c;越来越多的企业选择国产替代芯片。随着国产替代芯片的应用增加&#xff0c;东信源芯、旗连、国芯物联等出货量也开始增加&#xff0c;可以预见的是&#xff0c;国产工业RFID替代潮即将到来! 国…

解决Maven 依赖下载不全的问题 (自测有效)

问题描述&#xff1a;从仓库拉代码下来 发现存在部分依赖下载不了。 解决方案&#xff1a;去中央仓库一个个手动下载。具体步骤如下 1.清除下载一般的依赖 &#xff08;以下代码是 .bat 文件&#xff09; echo off rem create by NettQunrem 这里写你的仓库路径 s…

类实例化和实例初始化

就算不写main方法里面的3句&#xff0c;也会执行5 1 10 6 因为main方法所在的类需要先加载和初始化 执行顺序如下&#xff1a;先初始化父类再初始化子类 静态实例变量显示赋值和静态代码块代码从上到下顺序执行&#xff08;根据书写顺序&#xff09; 子类的实例化方法&am…

【9 Vue全家桶 – Vuex状态管理】

1 什么是状态管理 其实是数据管理但是为了更好的指出是由于状态的变化导致数据的变化(响应式数据),我们称之为状态管理. 2 Vuex的状态管理 组件只能直接读取state,而不能直接修改state,必须通过mutation才能修改.(pinia可以直接读取和修改state) 3 Vuex的安装 npm install …