java字节码技术是不是不能对jdk自带类进行拦截代理?

java字节码技术是不是不能对jdk自带类进行拦截代理?简介:背景是想对一个线上项目使用agent对java.util.concurrent.ExecutorCompletionService进行拦截代理,但是使用bytebuddy好像没有效果,是不是因为它的j

java字节码技术是不是不能对jdk自带类进行拦截代理?

背景是想对一个线上项目使用agent对java.util.concurrent.ExecutorCompletionService进行拦截代理,但是使用bytebuddy好像没有效果,是不是因为它的jdk自带的原生类,自定义的是可以进行代理的


解决方法:

首先你这个需求就是不合理的,修改JDK的行为是非常愚蠢的,第二其次jdk有一个bootstrap加载器 加载rt.jar内核的类是不走classloader的 就是为了保证系统的安全性,除非你改源码


jdk自带的类是由系统类加载器加载的,而且是首先加载。通过字节码技术就算修改了jdk里面的类,加载的时候也不会被系统类加载器加载(已经加载了),所以不会生效


使用java agent加载class文件的时候,自定义ClassFileTransformer,来修改类的字节内容也不行?


rt.jar 里的类是优先加载的

本文用户投稿或网站收集转载,如有侵权请联系本站。

在线搜索

作者信息

标签TAG

相关文章