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