`

Eclipse里使用javassist实例

阅读更多

这两天比较无聊,随便找点东西进行学习。目标就瞄准了javassist。关于javassist的介绍google一下,这里也不介绍了。

 

对于某一个类,直接在编译好的.class文件插入一些内容。

 

比如:

package test.param;

public class Screen {

	public void draw(int i , int j){
		
		System.out.println("move to i,j");
	}
	
	
}

 对于这个对象,我现在想在输出之前,把i,和j的值输出出来。如何使用javassist进行操作呢?

 

package test.param;

import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;

import javassist.CannotCompileException;
import javassist.ClassPool;
import javassist.CtClass;
import javassist.CtMethod;
import javassist.NotFoundException;

public class Test {
	public static void main(String[] args) throws NotFoundException, CannotCompileException, IOException, SecurityException, NoSuchMethodException, IllegalArgumentException, IllegalAccessException, InvocationTargetException {
		ClassPool pool = ClassPool.getDefault();
		
		CtClass ctClass = pool.get("test.param.Screen");
		CtMethod ctm = ctClass.getDeclaredMethod("draw");
		ctm.insertBefore("{System.out.println(\"i=\"+($1)+\",j=\"+$2);}");
		ctClass.writeFile();//这里我不知道为什么写不到文件里,很纳闷。
		
		Method m = ctClass.toClass().getMethod("draw",Integer.TYPE,Integer.TYPE);
		Screen s = new Screen();
		m.invoke(s, 1,2);
	}
}

 执行这个main方法的时候,输出结果就是这样:

i=1,j=2

move to i,j

一个简单的例子,稍微熟悉一下javassist.

分享到:
评论

相关推荐

    Eclipse下Javassist正确使用方法代码解析

    主要介绍了Eclipse下Javassist正确使用方法代码解析,javassist-3.15.0-ga.jar包是一款在java开发中十分重要的jar文件包,需要的朋友可以参考下,文中附下载链接。

    使用javassist修改class文件.pdf

    使用javassist修改class文件.pdf

    开发工具 javassist-3.21.0-GA

    开发工具 javassist-3.21.0-GA开发工具 javassist-3.21.0-GA开发工具 javassist-3.21.0-GA开发工具 javassist-3.21.0-GA开发工具 javassist-3.21.0-GA开发工具 javassist-3.21.0-GA开发工具 javassist-3.21.0-GA开发...

    javassist-3.19.0-GA-API文档-中文版.zip

    赠送jar包:javassist-3.19.0-GA.jar; 赠送原API文档:javassist-3.19.0-GA-javadoc.jar; 赠送源代码:javassist-3.19.0-GA-sources.jar; 赠送Maven依赖信息文件:javassist-3.19.0-GA.pom; 包含翻译后的API文档...

    javassist-3.23.1-GA-API文档-中文版.zip

    赠送jar包:javassist-3.23.1-GA.jar; 赠送原API文档:javassist-3.23.1-GA-javadoc.jar; 赠送源代码:javassist-3.23.1-GA-sources.jar; 赠送Maven依赖信息文件:javassist-3.23.1-GA.pom; 包含翻译后的API文档...

    使用Javassist对.class文件进行修改.doc

    使用Javassist对.class文件进行修改

    javassist-3.27.0-GA-API文档-中英对照版.zip

    赠送jar包:javassist-3.27.0-GA.jar; 赠送原API文档:javassist-3.27.0-GA-javadoc.jar; 赠送源代码:javassist-3.27.0-GA-sources.jar; 赠送Maven依赖信息文件:javassist-3.27.0-GA.pom; 包含翻译后的API文档...

    javassist-3.24.0-GA-API文档-中文版.zip

    赠送jar包:javassist-3.24.0-GA.jar; 赠送原API文档:javassist-3.24.0-GA-javadoc.jar; 赠送源代码:javassist-3.24.0-GA-sources.jar; 赠送Maven依赖信息文件:javassist-3.24.0-GA.pom; 包含翻译后的API文档...

    javassist-3.14.0-GA

    它已加入了开放源代码JBoss 应用服务器项目,通过使用Javassist对字节码操作为JBoss实现动态AOP框架。 关于java字节码的处理,目前有很多工具,如bcel,asm。不过这些都需要直接跟虚拟机指令打交道。如果你不想了解...

    javassist-3.23.1-GA-API文档-中英对照版.zip

    赠送jar包:javassist-3.23.1-GA.jar; 赠送原API文档:javassist-3.23.1-GA-javadoc.jar; 赠送源代码:javassist-3.23.1-GA-sources.jar; 赠送Maven依赖信息文件:javassist-3.23.1-GA.pom; 包含翻译后的API文档...

    javassist-3.24.0-GA-API文档-中英对照版.zip

    赠送jar包:javassist-3.24.0-GA.jar; 赠送原API文档:javassist-3.24.0-GA-javadoc.jar; 赠送源代码:javassist-3.24.0-GA-sources.jar; 赠送Maven依赖信息文件:javassist-3.24.0-GA.pom; 包含翻译后的API文档...

    Javassistjar包

    它已加入了开放源代码JBoss 应用服务器项目,通过使用Javassist对字节码操作为JBoss实现动态"AOP"框架。 关于java字节码的处理,目前有很多工具,如bcel,asm。不过这些都需要直接跟虚拟机指令打交道。如果你不想了解...

    javassist-3.21.0-GA-API文档-中文版.zip

    赠送jar包:javassist-3.21.0-GA.jar; 赠送原API文档:javassist-3.21.0-GA-javadoc.jar; 赠送源代码:javassist-3.21.0-GA-sources.jar; 赠送Maven依赖信息文件:javassist-3.21.0-GA.pom; 包含翻译后的API文档...

    javassistDemo.zip

    javassist的使用,也可直接使用该demo修改自己的jar中的方法,demo中写了两种方法可供参考

    javassist-3.20.0-GA-API文档-中文版.zip

    赠送jar包:javassist-3.20.0-GA.jar; 赠送原API文档:javassist-3.20.0-GA-javadoc.jar; 赠送源代码:javassist-3.20.0-GA-sources.jar; 包含翻译后的API文档:javassist-3.20.0-GA-javadoc-API文档-中文...

    javassist反射工具

    它已加入了开放源代码JBoss 应用服务器项目,通过使用Javassist对字节码操作为JBoss实现动态AOP框架。 关于java字节码的处理,目前有很多工具,如bcel,asm。不过这些都需要直接跟虚拟机指令打交道。如果你不想了解...

    javassist使用手册

    javassist一款日本开源的字节码工具类,相比asm等工具来说,更加利于让人理解,方便使用。该集合包中,详尽的介绍了javassist的使用

    javassist-3.18.1-GA-API文档-中英对照版.zip

    赠送jar包:javassist-3.18.1-GA.jar; 赠送原API文档:javassist-3.18.1-GA-javadoc.jar; 赠送源代码:javassist-3.18.1-GA-sources.jar; 赠送Maven依赖信息文件:javassist-3.18.1-GA.pom; 包含翻译后的API文档...

    javassist-3.18.1-GA-API文档-中文版.zip

    赠送jar包:javassist-3.18.1-GA.jar; 赠送原API文档:javassist-3.18.1-GA-javadoc.jar; 赠送源代码:javassist-3.18.1-GA-sources.jar; 赠送Maven依赖信息文件:javassist-3.18.1-GA.pom; 包含翻译后的API文档...

    javassist demo

    javassist 使用案例 源程序

Global site tag (gtag.js) - Google Analytics