[jboss-user] [Javassist user questions] - Re: adding annotations

cat4hire do-not-reply at jboss.com
Fri Feb 29 08:22:43 EST 2008


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#4133207

Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4133207



More information about the jboss-user mailing list