在此之前的Java 9,监控JavaAgent
加载到JVM通过boostrapClassloader
,以便监视的应用程序可以访问它们
在Java 9模块化的架构,只有java.base module
被加载在引导类加载器等,Java代理可以访问内部java.base只有类?它不能默认外java.base访问什么?
什么是需要内部javaAgent
改变,以便访问像java.sql中其他模块?
我只是确认本作的最新版本,并使用时,
Instrumentation::appendToBootstrapClassLoaderSearch
类被添加到引导装载程序(null
),并装入该装载机的unnamed module
。这是Java 9,EA-176真。
这里有一个链接在JDK 9 EA java.lang.instrument包的描述构建:
http://download.java.net/java/jdk9/docs/api/java/lang/instrument/package-summary.html
该段“提供给代理类加载代理类和模块/类”应该帮助这里的讨论。
至于java.sql中模块那么它的那些不再定义为引导加载程序数“非核心的”模块之一。移动这些模块平台的类加载器意味着他们能够以减少权限运行,并与平台的整体安全性,以便帮助。这应该是完全透明的类路径上的应用程序和库及只应通过(a)用-Xbootclasspath /一个运行的代码引人注目,(b)与null作为父母,以及(c)支撑剂产生的自定义类班加将引导-Class-Path的属性或appendToBootstrapClassLoaderSearch API引导类加载器搜索。