1
我试图在类加载时添加一些注释。
为此,我写了一个java代理变压器,它可以在加载时获取类字节码,并且可以更改它。 当我运行以下代码时,类的新注释apears被删除,但所有先前的注释和字段/方法都被删除。用javassist添加注释会删除以前的代码
CtClass ctClass = classPool.makeClass(new java.io.ByteArrayInputStream(classFileBuffer));
ClassFile classFile = clazz.getClassFile();
ConstPool constPool = classFile.getConstPool();
AnnotationsAttribute attr= new AnnotationsAttribute(constPool, AnnotationsAttribute.visibleTag);
javassist.bytecode.annotation.Annotation annotation = new javassist.bytecode.annotation.Annotation(type, constPool);
attr.setAnnotation(annotation);
classFile.addAttribute(attr);
classFileBuffer = ctClass.toBytecode();
其中classFileBuffer是返回到类加载器的字节数组。 如果任何人有一个想法,为什么以前的类注释和代码被删除,这将是非常有益的。
谢谢,
阿夫纳
谢谢!我会尝试一下。 – 2012-08-03 20:04:00