首页 > 其他分享 >高版本jdk的访问私有成员属性的正确姿势

高版本jdk的访问私有成员属性的正确姿势

时间:2022-09-20 17:03:44浏览次数:83  
标签:姿势 jdk 私有 javafx -- add graphics UNNAMED opens

在jdk17+已经不能直接通过 setAccessible 来访问私有属性了

Field name = access.getClass().getDeclaredField("name");
name.setAccessible(true);
name.set(access,"6666");// AccessTest{name='6666'}
System.out.println(access);

以上代码在jdk17+会抛出异常,可能在jdk 12+也会抛出异常,jdk高版本更新了安全域机制。

Unable to make field private static XXXXXXXXXXXXXXXXXX VVVVVVVVVVVVVVVVVVVVVVVVVV accessible: module javafx.graphics does not "opens XXXXXXXXXXXXXXXXXX" to unnamed module @64a294a6

虽然高版本不能直接反射访问私有变量、方法。我们可以通过添加jvm运行参数来允许

--add-opens java.base/java.lang=ALL-UNNAMED

--add-exports
javafx.graphics/com.sun.javafx.geom=ALL-UNNAMED
--add-exports
javafx.graphics/com.sun.javafx.text=ALL-UNNAMED
--add-exports
javafx.graphics/com.sun.javafx.scene.text=ALL-UNNAMED
--add-opens
javafx.graphics/javafx.scene.text=ALL-UNNAMED
--add-opens
javafx.graphics/com.sun.javafx.text=ALL-UNNAMED
--add-opens
javafx.graphics/com.sun.javafx.application=ALL-UNNAMED
--add-opens
java.base/java.lang.reflect=ALL-UNNAMED

标签:姿势,jdk,私有,javafx,--,add,graphics,UNNAMED,opens
From: https://www.cnblogs.com/lingkang/p/16711641.html

相关文章

  • JDK安装与卸载
    #卸载JDK1.删除JAVA的安装目录2.删除JAVA_HOME3.删除path下关于java的目录4.java-version #安装JDK1.百度搜索JDK8,找到下载地址2.同意协议3.下载电脑的......
  • Linux环境安装JDK8
    1、卸载系统中自带的openJDK1.1使用java-version命令查询系统是否有自带jdk 1.2使用rpm-qa|grepjava,命令查询java套件,删除包含openJDK的包rpm-e--nodepsjav......
  • jdk8集合查询
    List<String>ids=list.stream().map(ContractModificationBasicInfoDTO::getUuid).collect(Collectors.toList());privateCompletedBidSectionInfoDTOentityToDTO(Bi......
  • 搭建私有CA服务器
    配置私有CA服务器#CA搭建命令#进入到CA目录下cd/etc/pki/CA#打开一个子shell,用openssl生成一个私钥信息(umask077;opensslgenrsa-outprivate/cakey.pem1......
  • 编写 bzt 脚本的正确姿势
    这是今年1月24日的旧文,发现没在这里发过,就搬运过来了。声明本文讨论的使用场景主要为使用已有的jmx脚本,并配合json对jmx脚本进行部分参数的动态修改。只补充一......
  • jdk 1.8 环境变量的配置
    “”我的电脑“”→右键 → 属性                         ......
  • 解决idea创建maven项目默认编译版本为JDK1.5问题
    IntelliJIDEA里Maven默认情况下编译版本为JDK1.5当新建一个maven工程时,如果没有在pom文件中配置maven的编译版本,maven默认使用的是jdk1.5,即使idea中配置了JDK8或是其他......
  • maven 发布包到私有的Nexus仓库
    setting文件配置这里配置了两个mirror其中snapshot快照仓库用于保存开发过程中的不稳定版本,release正式仓库则是用来保存稳定的发行版本,。定义一个组件/模块为快照版本,只......
  • 如何配置Maven和JDK
    一、配置Maven环境(1)点击File下Settings(2)在输入框中输入maven,配置成功后先点击Apply在点击OK。 三、配置JDK(1)点击file下的NewProiectsSetup (2)直接弹出Project......
  • JDK安装与卸载
    卸载JDK删除Java的安装目录删除JAVA_HOME删除path下关于java的目录java-version安装JDK百度搜索JDK8,找到下载地址同意协议下载电脑对应版本双......