在Java 9(jdk-9 + 170)默认情况下不允许应用程序查看来自JDK的所有类,而不像以前的所有Java版本。需要使用--add-exports和--add-opens配置参数,例如:

--add-opens java.base/jdk.internal.loader=ALL-UNNAMED
--add-opens jdk.zipfs/jdk.nio.zipfs=ALL-UNNAMED
--add-opens java.base/jdk.internal.misc=ALL-UNNAMED

那么,Java 9中--add-exports和--add-opens有什么区别?

使用--add-exports包被导出,意味着所有的公共类型和成员都可以在编译和运行时访问。
随着--add-opens打开包,这意味着其中的所有类型和成员(不仅是公共的!)在运行时可以访问。
      所以在运行时的主要区别是--add-opens允许“深度反射”,意思是非公共成员的访问。您通常可以通过拨打setAccessible(true)的反射代码来识别此类访问。

参考文档:http://cn.voidcc.com/question/p-rfygdwxb-bhm.html

Java 9中--add-exports和--add-opens有什么区别?相关推荐

  1. java getmethods_java中Class.getMethods()和Class.getDeclaredMethods()方法的区别

    在java中,可以根据Class类的对象,知道某个类(接口)的一些属性(成员 ,方法,注释,注解)等.由于最近的工作中用到了这些,其中需要在代码中格局反射知道某些类的方法,查看文档的时候,看到了get ...

  2. Java线程中,Blocked,Wait,以及TIMED_WAIT的区别

    根据jdk1.6的api,java的Thread类,定义了六个状态: 线程状态.线程可以处于下列状态之一: NEW 至今尚未启动的线程处于这种状态. RUNNABLE 正在 Java 虚拟机中执行的线 ...

  3. Java spark中的各种范型接口Function的区别(持续更新中)

    表格来自[2] Class Function Type Function<T, R> T => R DoubleFunction<T> T => Double Pa ...

  4. scala java 区别_Scala(和Java)中的类和类型之间有什么区别?

    当您说"类型"时,我将假设您主要是指静态类型. 但是我将在短期内讨论动态类型. 静态类型是可以被静态证明的程序一部分的属性(静态表示"不运行它"). 在静态类型 ...

  5. 【Java】中int 和 Integer 与 new Integer() 的区别,int 可以使用 == 来对比两个变量是否相等,而 Integer 一定要使用 equals 来比较两个变量值是否相等

    目录 一.int 和 Integer 的区别 二. Integer.new Integer() 和 int 的比较 三.总结 四.更多详看: 一.int 和 Integer 的区别 两者的区别主要体现 ...

  6. java filewriter_java中Write FileWriter()和FileWriter(new file)的区别

    展开全部 没什么区别,只是不同的重载而已,最终都是调用32313133353236313431303231363533e58685e5aeb931333365663562的OutputStreamWr ...

  7. java Arrarlist中的add(int index,Object ojb)

    java Arrarlist中的add(int index,Object ojb) 怎么自己用代码实现这个功能啊? 求讲解 askdjklas3 | 浏览 11337 次  2012-02-29 19 ...

  8. Java栈中add()和push()的不同之处

    Java栈中add()和push()的不同之处 在日常使用中发现往栈中添加元素既可以用add(),也可以用push(). 需要注意的是栈本身没有add()方法,add()方法是来自栈继承的类 Vect ...

  9. java Queue中 add/offer,element/peek,remove/poll区别

    java Queue中 add/offer,element/peek,remove/poll中的三个方法均为重复的方法,在选择使用时不免有所疑惑,这里简单区别一下: 1.add()和offer()区别 ...

  10. eclipse中,add jars和add library的区别

    Add Jars ----添加Jar包,是指本Eclipse当前包含的工程中,在工程列表下选取即可 Add External Jars---添加外部的Jar,是指外部的,需要用文件管理器,在电脑硬盘上 ...

最新文章

  1. 如何成为Android开发高手
  2. 适合初学者的数据结构_数据结构101:图-初学者的直观介绍
  3. java将0到9随机输出_生成0到9之间的随机整数
  4. (转) 技术揭秘:海康威视PASCAL VOC2012目标检测权威评测夺冠之道
  5. Java通过JDBC连接SQL Server2017数据库
  6. 变量 常量 Python变量内存管理 赋值方式 注释
  7. JavaScript 学习中的帮助记忆(日积月累)
  8. 测试集的构成比例对网络分类性能的影响cp
  9. 服务端如何识别是selenium在访问以及解决方案参考一
  10. 上海工程技术大学计算机通信与网络,上海工程技术大学
  11. html定位的所有属性,HTML CSS定位属性详解 嘿嘿嘿
  12. 一篇博客读懂设计模式之---委派模式
  13. ARM Linux.2.6.34内核移植
  14. 快速排序 python 4种写法_[算法] 关于快速排序的四种写法
  15. 前端框架这么火,还有必要学好原生 JavaScript 吗?
  16. 华为机试HJ23:删除字符串中出现次数最少的字符
  17. BestCoder Round #56/hdu5463 Clarke and minecraft 水题
  18. tomcat运行的本质
  19. Julia: 如何读出csv文件中的中文字符?
  20. 饥荒服务器物品指令,流年饥荒控制台指令全+物品大全+服务器管理命令大全.docx...

热门文章

  1. 从固定管线到可编程管线:十段代码入门OpenGL
  2. ROS-Control专题:PR2的六个概念【3】
  3. python 123 io网站答题如果最小化会有提示吗_爬虫进阶教程:百万英雄答题辅助系统...
  4. 供应链管理:理解供应链管理
  5. 使用paypal的手续费
  6. 微信公众号后台接收关注事件
  7. autorun的使用
  8. 使用天乐软件加密狗(JDProtect)保护您的软件,防止程序被跟踪/逆向/反编译/破解
  9. android opencv 银行卡识别,【opencv小应用】银行卡号识别(一)
  10. 天梯赛 L2 列车调度