首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

哪位高手动了他的jar包(三)

2012-11-09 
谁动了他的jar包(三)接谁动了他的jar包(一)http://ilab.iteye.com/blog/984823谁动了他的jar包(二)http://

谁动了他的jar包(三)

谁动了他的jar包(一)  http://ilab.iteye.com/blog/984823
谁动了他的jar包(二)  http://ilab.iteye.com/blog/1002629

一的方法侵入性较强,可维护性较差.
二的方法逻辑分工明确,维护性较好,使用起来简单.但无法适用所有的修改情况;
              对于不同情况的类,要进行不同的反射改造,和继承.
              特别的,对于,final标识的属性或者类来说,二的方法,就无能为力了.

有没有两全其美的方法呢,既可以做到无侵入,易维护,并且可以适用于所有不同的情况,达到完美的替换,以达到修改jar包的目的呢;

可以试试,用jvmti~.

先简单介绍下
http://download.oracle.com/javase/1.5.0/docs/guide/jvmti/

偷个懒,直接翻译了


jvm 工具接口(jvmti) 是一种新的本地编程工具接口.
通过它,你可以对虚拟机中的程序进行监控,也能够控制其执行;
jvmti 支持了所有的需要访问虚拟机状态的工具,
包括,但不仅限于: 分析,调试(debug),监控,线程分析,覆盖分析工具;

jvmti 用来替代 jvmpi及jvmdi(原来的分析调试工具);


"控制其执行",是否包括,改变某些类的执行方式呢.答案是肯定的,我们现在仍然用上面的例子,
来演示下如何用jvmti的技术,来达到我们的目的;


新建类Transformer,实现 java.lang.instrument.ClassFileTransformer



以及类Premain



3 楼 zmty123 2011-05-10   设置runConfigration VMargument 为 -javaagent:D:/premain.jar
这个在哪设置呢! 4 楼 littleJava 2011-05-18   受益不少,多谢! 5 楼 yfyh87 2011-05-19   littleJava 写道受益不少,多谢!
:)

热点排行