首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java9上的JavaAgent

Java9上的JavaAgent
EN

Stack Overflow用户
提问于 2017-07-04 20:55:47
回答 2查看 1.3K关注 0票数 4

在java9之前,通过boostrapClassloader将监控JavaAgent加载到JVM中,以便被监控的应用程序可以访问它们。

使用Java9模块化体系结构,只有java.base module被加载到Bootstrap类加载器中,因此,Java agent只能访问java.base中的类。默认情况下,它不能访问java.base以外的任何内容?

为了访问java.sql等其他模块,需要在javaAgent中进行哪些更改?

EN

回答 2

Stack Overflow用户

发布于 2017-07-04 23:18:11

我刚刚在最新版本中验证了这一点,并在使用

代码语言:javascript
复制
Instrumentation::appendToBootstrapClassLoaderSearch

该类被添加到引导加载器(null)中,并加载到此加载器的unnamed module中。对于Java 9、ea-176也是如此。

票数 4
EN

Stack Overflow用户

发布于 2017-07-06 15:34:20

以下是JDK9EA构建中的java.lang.instrument包描述的链接:

http://download.java.net/java/jdk9/docs/api/java/lang/instrument/package-summary.html

“加载代理类和代理类可用的模块/类”一节应该对这里的讨论有所帮助。

至于java.sql模块,那么它是几个不再定义到引导加载程序的“非核心”模块之一。将这些模块移动到平台类加载器意味着它们可以以更少的权限运行,因此有助于平台的整体安全性。这对类路径上的应用程序和库应该是完全透明的,并且应该只在以下代码中可见:(a)使用-Xbootclasspath/a运行,(b)创建一个以null作为父类的自定义类,以及(c)支持添加到引导类加载器搜索程序的类的代理,这些类是使用引导类路径属性或appendToBootstrapClassLoaderSearch应用编程接口添加的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44906662

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档