org.objectweb.asm.ClassVisitor.visit
发现用 MyEclipse 5.5 做 Struts 1.2 + Spring 2.0 + Hibernate 3.1 整合时启动过程中报如下的错误:
Spring 和 Hibernate 共用的一些 jar 文件发生了版本冲突, 删除 WEB-INF/lib/asm-2.2.3.jar 然后重启 Tomcat.
asm-2.2.3.jar
asm.jar
asm-attrs.jar
asm-commons-2.2.3.jar
asm-util-2.2.3.jar
2007-08-08 15:36:17,406 ERROR [org.hibernate.proxy.BasicLazyInitializer] - CGLIB Enhancement failed: dao.User
java.lang.NoSuchMethodError: org.objectweb.asm.ClassVisitor.visit(IILjava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)V
at net.sf.cglib.core.ClassEmitter.begin_class(ClassEmitter.java:77)
原文参考: http://heweiya.iteye.com/blog/101575
分享到:
相关推荐
2. **ClassReader**: 这个类用于读取已有的字节码,并且可以通过事件回调机制(如ClassVisitor)来分析字节码。 3. **MethodVisitor**: 这是用来访问和修改方法的接口,包括方法的访问标志、返回类型、参数类型、...
关键接口ClassVisitor中的核心方法`visit(int version, int access, String name, String signature, String superName, String[] interfaces)`是访问类声明时首次被调用。参数含义如下: 1. `version`:表示类文件...
1. `visit()`:开始访问一个类,提供了类的基本信息,如版本号、访问标志等。 2. `visitField()`:访问类的字段,可以用来添加、修改或删除字段。 3. `visitMethod()`:访问类的方法,可以用来添加、修改或删除方法...
2. **ClassVisitor**:这个接口定义了在解析类字节码时可能触发的各种事件,例如类头部解析完成、解析注解、字段和方法等。开发者可以通过实现这个接口,自定义处理这些事件的方法,以实现特定的逻辑。 3. **...
2013-08-12 14:33:37.672:... Add CGLIB to your classpath.:java.lang.IncompatibleClassChangeError: class net.sf.cglib.core.DebuggingClassWriter has interface org.objectweb.asm.ClassVisitor as super class
cw.visit(V1_8, ACC_PUBLIC + ACC_ABSTRACT + ACC_INTERFACE, "sample/HelloWorld", null, "java/lang/Object", null); ``` 3. 接下来,调用`visitEnd()`方法来结束类的访问。这标志着接口定义的结束。 ```java cw....
3. **遍历和修改类结构**:通过调用ClassVisitor的visit方法开始遍历类结构,并在访问到特定元素时调用对应的visit方法进行修改。 4. **生成字节码**:完成遍历和修改后,调用ClassWriter的finish方法,ASM会根据...
通过调用visit方法,你可以构建出一个新的类结构。 3. **ClassReader**:这个类用于读取已存在的.class文件,它可以解析字节码并提供给ClassVisitor访问。 4. **FieldVisitor** 和 **FieldWriter**:分别用于访问...
当你调用 `ClassReader.accept()` 方法时,你需要提供一个 `ClassVisitor` 实例,`ClassReader` 将通过回调方法将类信息传递给 `ClassVisitor`。 3. **类适配器(ClassAdapter)**:ASM 提供了一些预定义的适配器类...
4. 字节码操作:ASM提供了各种visit方法,用于在字节码级别插入、修改或删除指令。 在ASM字节插桩过程中,通常涉及以下步骤: 1. **分析阶段**:首先,使用ASM的ClassReader读取目标类的字节码,通过访问控制器传递...
3. Tools(工具):ASM提供了一系列工具,包括Type工具用于处理类型描述符,TraceClassVisitor工具用于跟踪ClassVisitor的执行过程,CheckClassAdapter工具用于检查ClassVisitor的实现是否正确,以及ASMifier工具...
在这个包里,你可以找到一些重要的类,如ClassReader、ClassVisitor和ClassWriter等,它们都是ASM库的核心API。 除此之外,ASM库也提供了一些其他的功能。例如,它可以生成二进制的class文件,也可以在类被加载入...
3. 使用ASM的基本流程:解析类文件,创建ClassWriter对象,通过ClassVisitor处理类结构,然后通过ClassWriter生成新的字节码。 4. 版本历史:ASM从早期版本到现在经历了多次更新,每次更新可能引入新的功能、优化...
3. 访问和修改类:ASM提供了ClassReader和ClassVisitor接口,可以用来读取和修改已有的类结构,包括字段、方法、注解等。 4. 写入类:生成的字节码可以通过ClassWriter写入到新的Class文件中,或者通过自定义...
在实际使用ASM时,开发者需要了解ASM的基本概念,如ClassVisitor、MethodVisitor等,这些都是ASM用来解析和生成字节码的核心接口。ASM通过这些接口允许用户以非常低级别的细节来操作字节码,比如添加、修改或删除...
- **ClassWriter**:生成字节码的工具,通过接收ClassVisitor并转换为字节数组。 - **ClassReader**:读取并解析类文件,提供给ClassVisitor访问其结构。 4. **学习资源** "ASM4使用指南.pdf"很可能是ASM的详细...
例如,ASM提供了`ClassReader`类来读取和解析.class文件,`ClassWriter`类来生成新的字节码,以及一系列的访问器(如`ClassVisitor`、`FieldVisitor`和`MethodVisitor`)来遍历和修改类结构。 `asm-2.2.1.jar....
cw.visit(V1_8, ACC_PUBLIC + ACC_SUPER, className, null, "java/lang/Object", new String[]{interfaceName}); // 实现接口方法 MethodVisitor mv = cw.visitMethod(ACC_PUBLIC, "method", "()V", null, null)...
cw.visit(Opcodes.V1_5, Opcodes.ACC_PUBLIC + Opcodes.ACC_ABSTRACT + Opcodes.ACC_INTERFACE, "com/asm3/Comparable", null, "java/lang/Object", new String[]{"com/asm3/Mesurable"}); // 定义类的静态常量...
在使用ASM-Attrs-1.4.1.jar时,开发者需要了解其API接口,包括`ClassReader`用于读取类文件,`ClassWriter`用于生成新的类文件,以及各种访问器(如`ClassVisitor`, `FieldVisitor`, `MethodVisitor`)来访问和修改...