采用javassist来将一个类中的field改变类型。待改变的类代码如下:
public class JassistTest {
@Autowired
private StpService stpService;
public void doit(Long userid){
PeakSeasonMainResponse res = stpService.getPeakOverView(userid);
System.out.println(stpService.getClass().getName());
System.out.println("hello" + res);
}
}
进行改变操作的类如下:
public class TestMain {
public TestMain(){
}
public static void main(String[] args) throws Exception{
ClassPool pool = ClassPool.getDefault();
CtClass cc = pool.get("JassistTest");
CtField f = cc.getDeclaredField("stpService");
cc.removeField(f);
cc.addField(CtField.make("private Proxy stpService;", cc));
cc.writeFile("D:\\DevProgram\\eclipse-jee-kepler-R-win32\\workspace\\stable\\fc-deimos\\target\\test-classes");
JassistTest test = new JassistTest();
test.doit(7060L);
}
}
class文件生成后,我用反编译工具查看,Javassist已经变为如下:
public class JassistTest
{
private Proxy stpService;
public void doit(Long userid)
{
PeakSeasonMainResponse res = this.stpService.getPeakOverView(userid);
System.out.println(this.stpService.getClass().getName());
System.out.println("hello" + res);
}
}
但当我执行TestMain.java文件中的test.doit()方法时,还是报异常了。
Exception in thread "main" java.lang.NoSuchFieldError: stpService
at JassistTest.doit(JassistTest.java:13)
at TestMain.main(TestMain.java:33)
实在搞不懂,请教大家
相关推荐
Javassist 是一个动态生成字节码的框架,生成的字节码可以输出或实时加载到 JVM 中。下面是一个详细的知识点总结: 一、Javassist 概述 Javassist是一个 Java 字节码操作类库,用于生成、修改和加载 Java 字节码。...
开发工具 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开发...
这个"javassistDemo.zip"压缩包提供了一个示例,展示了如何利用Javaassist库动态修改Java类的方法。在Java应用程序中,这种能力非常有用,特别是在进行AOP(面向切面编程)或者在无法重新编译源代码的情况下需要修改...
avassist是一个开源的分析、编辑和创建Java字节码的...javassist是jboss的一个子项目,其主要的优点,在于简单,而且快速。直接使用java编码的形式,而不需要了解虚拟机指令,就能动态改变类的结构,或者动态生成类。
javassist是一个开源的Java字节码操作库,它可以动态修改类的字节码,实现运行时代码增强。开发者无需理解复杂的字节码格式,只需使用javassist提供的API,就可以轻松地添加、删除或修改类的方法、字段甚至整个类。...
赠送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文档...
赠送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文档...
赠送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文档...
这个文件很可能是Javassist的一个特定版本,包含必要的类库和可能的示例代码。要开始使用,可以按照以下步骤操作: 1. **导入依赖**:在Java项目中,将下载的Javassist库添加到类路径,如果是Maven项目,可以在pom....
Javassist是一个开源的分析、编辑和创建Java字节码的类库。是由东京工业大学的数学和计算机科学系的 Shigeru Chiba (千叶 滋)所创建的。它已加入了开放源代码JBoss 应用服务器项目,通过使用Javassist对字节码操作...
赠送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` 是一个开源库,全称为“Java ClassPool”,它允许程序员在运行时动态地修改类或者创建新的类。这个工具的强大之处在于,它提供了一种无需重新编译源代码就能改变Java类行为的方式。通过`javassist`,...
赠送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文档...
赠送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.18.1-GA.jar`是Javaassist的一个特定版本,GA代表“General Availability”,意味着这是一个正式发布的稳定版本。这个版本号`3.18.1`表明它是对之前版本的改进和增强,修复了已知问题并可能引入了一些...
这个"javassist-3.20.0-GA.zip"压缩包包含了Javaassist的3.20.0-GA版本,这是一个兼容JDK8的版本。自这个版本之后,Javaassist开始转向支持JDK9及以上版本。 Javaassist的工作原理是基于字节码操作。Java字节码是...
javassist包
赠送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文档...
赠送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.18.2-GA.jar