I've made another experiment: using an AnnotationsWriter as follows does not work
too:
|
| ByteArrayOutputStream aos = new ByteArrayOutputStream();
| AnnotationsWriter aw = new AnnotationsWriter(aos, constantPool);
| aw.numAnnotations(1);
| aw.annotation(this.annotationClassName, 0);
| aw.close();
| byte ab[] = aos.toByteArray();
| attribute = new AnnotationsAttribute(constantPool,
AnnotationsAttribute.visibleTag, ab);
|
| System.out.println("Annotation attribute " + attribute.getName() +
" " + attribute.getAnnotations().length);
| classFile.addAttribute( attribute );
|
The class can be loaded and instantiated, but I cannot access its annotations.
In both cases, if I print the classfile content with a ClassFileWriter I got a message
that lets me think I've got the annotations:
| attribute: SourceFile (2 byte): javassist.bytecode.SourceFileAttribute
| attribute: RuntimeVisibleAnnotations (6 byte):
javassist.bytecode.AnnotationsAttribute
|
Moreover, in the case in which I use an AnnotationsWriter I got the following run-time
exception when I try to access the annotations thru the Class.getAnnotations() method:
| Exception in thread "Thread-Example-Main"
java.lang.reflect.GenericSignatureFormatError
| at sun.reflect.generics.parser.SignatureParser.error(SignatureParser.java:103)
| at
sun.reflect.generics.parser.SignatureParser.parseFieldTypeSignature(SignatureParser.java:233)
| at
sun.reflect.generics.parser.SignatureParser.parseTypeSignature(SignatureParser.java:359)
| at
sun.reflect.generics.parser.SignatureParser.parseTypeSig(SignatureParser.java:157)
| at sun.reflect.annotation.AnnotationParser.parseSig(AnnotationParser.java:367)
| at
sun.reflect.annotation.AnnotationParser.parseAnnotation(AnnotationParser.java:181)
| at
sun.reflect.annotation.AnnotationParser.parseAnnotations2(AnnotationParser.java:69)
| at
sun.reflect.annotation.AnnotationParser.parseAnnotations(AnnotationParser.java:52)
| at java.lang.Class.initAnnotationsIfNecessary(Class.java:3072)
| at java.lang.Class.getAnnotations(Class.java:3052)
|
I cannot find whre I'm doing something wrong.
View the original post :
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4133207#...
Reply to the post :
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&a...