`

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搭建Hibernate框架所需要的jar包

    在使用Eclipse搭建Hibernate框架时,确保正确配置所需的jar包至关重要。本文将详细介绍如何在Eclipse环境中搭建Hibernate,并列举出支持Oracle数据库所需的19个jar包。 首先,我们需要理解Hibernate的工作原理。...

    ExtJS_MVC框架的搭建实例

    ### ExtJS_MVC框架的搭建实例 #### 一、引言 随着Web应用的发展,越来越多的企业选择使用MVC架构来构建复杂的应用系统。其中,ExtJS作为一种强大的客户端框架,能够帮助开发者快速构建出美观且功能丰富的用户界面。...

    seasar实例教程

    使用Seasar2的基本功能,如S2Container和S2AOP,需要在CLASSPATH中包含特定的库文件,包括aopalliance、commons-logging、javassist、ognl、s2-framework等。如果要利用Seasar2的扩展功能,如S2JTA、S2DBCP、S2JDBC...

    hibernate-3.2.6.ga.zip

    3. **javassist.jar**:动态类生成和修改工具,Hibernate使用它来实现运行时的类增强。 4. **cglib-nodep.jar**:另一个动态代理库,用于无法使用Java反射机制的情况下生成子类。 总结,"hibernate-3.2.6.ga.zip...

    Java编程思想源码关联jar包

    `org.eclipse.swt`是Eclipse项目的一部分,是一个用于构建跨平台GUI应用程序的库。它为Java提供了一种与操作系统交互的方式,支持Windows、Linux和Mac OS等平台。学习`swt.jar`可以帮助你创建功能丰富的桌面应用程序...

    Hibernate—jar

    在实际开发中,将这些jar包添加到项目的类路径(ClassPath)是至关重要的,这可以通过IDE(如Eclipse或IntelliJ IDEA)的配置,或者在构建脚本(如Maven或Gradle)中声明依赖来完成。正确设置后,开发者就可以利用...

    hibernate-3.6.8的jar包

    4. javassist.jar:另一种用于动态生成类的库,某些版本的Hibernate可能使用它。 5. antlr-2.7.7.jar:解析和生成语法树的库,用于HQL解析。 6. dom4j-1.6.1.jar:XML处理库,Hibernate用它来处理XML配置文件。 7. ...

    Java核心技术大全

    - Eclipse Memory Analyzer (MAT) 是一款强大的Java内存分析工具,能够帮助开发者识别和解决内存泄漏等问题。 - VisualVM 是另一款强大的工具,它提供了一个统一的界面来监控和故障排查运行中的Java应用程序。特别是...

    Java宝典大全

    - **Java诊断工具**: Eclipse Memory Analyzer (MAT) 和 VisualVM 等工具可以帮助开发者诊断内存泄漏等问题。 ##### 1.2 Java基础知识 - **阅读源代码**: 了解Java核心库的实现细节对于深入理解Java语言至关重要。...

    Java宝典(第一版)

    - **Java诊断工具**:例如Eclipse Memory Analyzer (MAT)可以帮助分析Java应用程序的内存使用情况;VisualVM提供了一个用户友好的界面来监控和调试JVM运行的应用程序。 - 通过编写特定类型的异常程序(如...

    ssh三大框架整合需要的jar

    - `javassist.jar`:Hibernate使用的字节码操作库。 - 数据库驱动jar,如`mysql-connector-java.jar`或`ojdbc.jar`等,根据实际使用的数据库选择相应的驱动。 4. **其他依赖**: - `commons-logging.jar`:日志...

    org.hibernate.ejb-library-3.4.0.GA-A

    2. `com.springsource.javassist-3.15.0.GA.jar`:这是一个Java字节码操作和分析框架,Hibernate使用它来实现动态代理和类的增强。 3. `...

    Hibernate jar

    Hibernate利用Java的字节码增强技术(如javassist或CGLIB),在运行时动态生成和修改字节码,实现对对象的透明持久化。这种技术允许Hibernate在对象实例化时自动插入数据库操作的代码,如保存、更新和删除,从而提高...

    hibernate-release-5.2.2.Final

    7. **javassist.jar**:这是一个代码生成和字节码操作库,Hibernate使用它在运行时动态生成代理类,以实现延迟加载、动态SQL等功能。 8. **slf4j-api.jar**和相应的实现库(如logback-classic.jar):提供了日志...

    Cglib的jar文件 Cglib.zip

    Cglib是一个强大的Java代码生成库,它在运行时动态创建子类,为现有类提供扩展功能。这个库被广泛用于实现AOP(面向切面编程...在这些情况下,可以考虑使用Java的动态代理或者其他的字节码库,如Javassist或ByteBuddy。

    Java实训教程 Java软件开发实战 Java开发框架介绍 struts2_1_入门介绍 共29页.pptx

    - **创建Web项目**:使用IDE(如Eclipse或IntelliJ IDEA)创建一个新的Web项目。 - **添加Struts2组件包**:包括struts2-core、xwork、ognl、freemarker、javassist等必要的jar包。 - **配置web.xml**:添加Struts2...

    asm bytecode

    - **Eclipse**:在单元测试和性能分析等方面使用。 - **面向切面编程(AOP)**:如AspectJ和AspectWerkz。 - **大多数Java性能分析工具**:如JProbe、Optimizeit、JProfiler等。 #### Java类文件结构简介 Java类文件...

Global site tag (gtag.js) - Google Analytics