Java 字节码编辑类库 Javassist

Apache
Java
跨平台
JBoss
2008-09-24

Javassist是一个开源的分析、编辑和创建Java字节码的类库。是由东京技术学院的数学和计算机科学系的 Shigeru Chiba 所创建的。它已加入了开放源代码JBoss 应用服务器项目,通过使用Javassist对字节码操作为JBoss实现动态AOP框架。

Javassist(JAVA编程ASSISTant)使Java字节码操作变得简单。 它是一个用Java编辑字节码的类库; 它使Java程序能够在运行时定义新类,并在JVM加载时修改类文件。 与其他类似的字节码编辑器不同,Javassist提供两个级别的API:源级别和字节码级别。 如果用户使用源级API,他们可以在不知道Java字节码规范的情况下编辑类文件。 整个API仅使用Java语言的词汇表进行设计。 您甚至可以以源文本的形式指定插入的字节码; Javassist即时编译它。 另一方面,字节码级API允许用户直接编辑类文件作为其他编辑器。

“Javassist”的图片搜索结果

示例代码:

ClassPool pool = ClassPool.getDefault();
CtClass cc = pool.get("test.Rectangle");
cc.setSuperclass(pool.get("test.Point"));
cc.writeFile();

 

的码云指数为
超过 的项目
加载中

评论(1)

obaniu
obaniu
#Javassist#之所以能直接撸java代码达到修改字节码而asm必须得用恶心的字节码,原来是它手撸了一个java语法解析器。不过粗看源码这个解析器非常弱鸡,java版本的升级就麻烦了。
无争
无争
很好用 Javassist

暂无资讯

2
回答
Javassist 使用指南(二)

本文翻译自 Javassist Tutorial-2 4. 自省和自定制 (Introspection and customization) CtClas...

05/14 15:09
3
回答
采用javassist 如何在CtClass中添加泛型字段?

ClassPool cp=ClassPool.getDefault(); CtClass cc=cp.makeClass("com.dynamic.Use...

2015/12/21 17:14
2
回答
javassist.CannotCompileException

通过使用 javassist 对某个类 添加一个方法, 采用 JDK自带的getDeclaredMethod 判断是否存在 新加的方法, 如果没有再使用 ...

2013/08/21 09:15
2
回答
javassist创建方法问题
Sub 的回答 2013/03/07 11:47
最佳答案
应该使用 sBuf_update.append("update.setParams(new Integer("+getMethod+"));\r\n"); 因为 javassist 不支持 auto-box 和 auto-unbox 需要手动处理。
7
回答
Javassist cglib哪个更优

为什么hibernate使用javassist代替cglib呢? 难道是cglib不行~但spring好像还是使用cglib~ 使用这两个都会出现java...

2010/08/20 23:23
2
回答
关于在使用javassit遇到的问题
我是潮汐 的回答 2011/06/17 20:59
最佳答案
FilenameUtils 他不是说了没有这样的类么。 这个地方应该写类的全名吧!

没有更多内容

加载失败,请刷新页面

没有更多内容

Java动态编程初探——Javassist

最近需要通过配置生成代码,减少重复编码和维护成本。用到了一些动态的特性,和大家分享下心得。 我们常用到的动态特性主要是反射,在运行时查找对象属性、方法,修改作用域,通过方法名称调...

2016/07/25 17:31
105
0
java.io.IOException: invalid constant type: 18 问题

Caused by: java.lang.RuntimeException: java.io.IOException: invalid constant type: 18  at javassist.CtClassType.getClassFile2(CtClassType.java:203)  at javassist.CtC...

2015/11/17 09:12
3.2K
0
Java动态编程初探——Javassist

最近需要通过配置生成代码,减少重复编码和维护成本。用到了一些动态的特性,和大家分享下心得。 我们常用到的动态特性主要是反射,在运行时查找对象属性、开发方法 ,修改作用域,通过开发方...

java获取参数名称

java获取参数名称

2016/05/17 21:30
260
2
JDK1.8使用Dubbo时需注意

Dubbo自带的很多包都比较旧了,其中的javassist在JDK1.8上运行会报错 而且错误通常比较诡异,javassist是编辑和创建Java字节码的类库,常见的错误会从spring中报出 解决办法: <dependency>...

2018/10/22 11:34
375
0
Java 编程的动态性, 第四部分: 用 Javassist 进行类转换

用 Javassist 转换字节码中的方法 厌倦了只能按编写好源代码的方式执行的 Java 类了吗?那么打起精神吧,因为您就要发现如何将编译器编译好的类进行改造的方法了!在本文中,Java 顾问 Denn...

2015/04/14 10:52
200
0
Javassist(1)-helloworld-edu

Javaassist helloworld

2016/10/29 01:19
68
0
hibernate4.2.1默认集成javassist-3.15.0-GA包的一个bug问题

hibernate4.2.1默认集成javassist-3.15.0-GA这个包做hibernate.bytecode.provider

2014/08/04 16:15
531
1

没有更多内容

加载失败,请刷新页面

返回顶部
顶部