关于字节码增强

问题描述

各位,今天小弟用Javassist字节码增强框架修改一个class后,发现用URLClassLoader加载器去加载这个class的时候不能找到之前的那个类了,不知道是什么原因,有人可以给我解答一下吗?

解决方案

解决方案二:
你确定路径正确?包括包。另外为什么不直接反编译,修改后再编译?

时间: 2024-11-02 17:47:55

关于字节码增强的相关文章

spring ,hibernate 都是用到了asm字节码技术,请问它们具体都拿ASM来实现了什么功能?或者说在哪个功能上用到的

问题描述 spring ,hibernate 都是用到了asm字节码技术,请问它们具体都拿ASM来实现了什么功能?或者说在哪个功能上用到的 我们查看Spring,主要使用了cglib动态代理来实现一些IOC或者AOP功能,但是这个和ASM好像是没关系?还有hibernate,在做数据持久化的时候主要用的是反射,那它有拿ASM干了什么呢? 解决方案 动态代理,hibernate的懒加载使用到了asm,spring的AOP也使用到了.你建立一个hibernate映射对象并使用懒加载配置的时候,在内存

深入字节码 -- 计算方法执行时间

什么是字节码? java程序通过javac编译之后生成文件.class就是字节码集合,正是有这样一种中间码(字节码),使得scala/groovy/clojure等函数语言只用实现一个编译器即可运行在JVM上. 看看一段简单代码. public long getExclusiveTime() { long startTime = System.currentTimeMillis(); System.out.printf("exclusive code"); long endTime =

关于java字节码框架ASM的学习

一.什么是ASM ASM是一个java字节码操纵框架,它能被用来动态生成类或者增强既有类的功能.ASM 可以直接产生二进制 class 文件,也可以在类被加载入 Java 虚拟机之前动态改变类行为.Java class 被存储在严格格式定义的 .class文件里,这些类文件拥有足够的元数据来解析类中的所有元素:类名称.方法.属性以及 Java 字节码(指令).ASM从类文件中读入信息后,能够改变类行为,分析类信息,甚至能够根据用户要求生成新类. 使用ASM框架需要导入asm的jar包,下载链接:

java中的字节码

这段时间一直在看java,看到讲 Reflection,ClassLoader,javassist 的地方,很兴奋,因为以前用.net的时候接触过一点点Reflection,但我再看到ClassLoader的时候,简直觉得非常神奇,可是神奇的东西一般都很难懂,看了很多资料,都不太明白,直到在ibm的网站上看到<java编程的动态性>,很详细的阐述了ClassLoader的作用,接着我看了使用javassist修改字节码的地方,跃跃欲试,动手做了一个小小的例子,朋友说我误入歧途,刚刚接触java

Java编程的动态性,第7部分: 用BCEL设计字节码

Apache Byte Code Engineering Library (BCEL)可以深入 Java 类的字节码.可以用它 转换现有的类表示或者构建新的类,因为 BCEL 在单独的 JVM 指令级别上进行操作,所以可 以让您对代码有最强大的控制.不过,这种能力的代价是复杂性.在本文中,Java 顾问 Dennis Sosnoski 介绍了 BCEL 的基本内容,并引导读者完成一个示例 BCEL 应用程序,这 样您就可以自己决定是否值得以这种复杂性来换取这种能力. 在本系列的最后三篇文章中,我

用BCEL设计字节码

这个最接近之前提出的API转换问题 这个需要扫描源代码找到此类的方法调用处,然后在方法调用处的前后添加指令 即将代码转换成如下形式: public class StringBuilder { public String buildString(int length) { String result = ""; for (int i = 0; i < length; i++) { result += (char)(i%26 + 'a'); } return result; } pu

Java字节码修改框架ASM

字节码相对Java的意义类似汇编相对C的意义,底层了解的越多越深入,程序就越神奇,一切想法皆有可能实现.学习了下字节码框架ASM,总结分享下: API概述. 一.ASM库提供了两类API接口模型来产生或者修改类字节码: (1)核心API: 基于事件,每个事件代表类的一个元素,如头事件.方法事件.字段事件等.特点是更快耗费更少的内存.(2)树型API: 基于对象树状结构,字段方法等都可以看做对象树的一部分.使用相对简单,但耗费内存. 二.API包结构大致如下: (1)事件.解析器.生产器类API在

class字节码中常量池不连续

问题描述 class字节码中常量池不连续 求助一下,这几天在看jvm的class结构定义,用javap -v 反编译一个项目中的类,发现常量池编号不连续, 少了编号为126 和 138 的常量,这是为什么 解决方案 Class文件内容和常量池Class文件内容及常量池Class文件内容及常量池

JVM Class详解之二 Method字节码指令

JVM Class详解之一中我们介绍了Class文件的结构和如何使用16进制编辑器读懂class文件. 今天我们来继续一起下Class文件中Method方法中经过java编译器编译后的Method字节码指令是什么样子的 JVM有哪些字节码指令 首先我们需要了解JVM有哪些字节码指令 第一类load类型 是将本地变量中的数据推送入栈中 (什么是本地变量我们后面聊) iload,iload_,lload,lload_,fload,fload_,dload,dload_,aload,aload_ il