Как просмотреть аннотацию файла классов Java через командную строку? - PullRequest
24 голосов
/ 14 октября 2010

Существует ли инструмент командной строки, предпочтительно в JDK, который либо печатает все аннотации в файле класса, либо принимает конкретную аннотацию в качестве аргумента для печати?

Если это так, существует ли эквивалентная команда, которая может бытьзапустить файл JAR для определенного класса, содержащегося в?

Я гуглил это некоторое время и не повезло.(

Ответы [ 2 ]

28 голосов
/ 07 октября 2011

Использование флага -verbose или -v с версией javap 1.7 или более поздней покажет сохраненные аннотации.

Пример:

javap -p -v ./services/target/windup-web-services/WEB-INF/classes/org/jboss/windup/web/services/model/RegisteredApplication.class

 #50 = Utf8   Ljavax/persistence/Column;
 #64 = Utf8   Lorg/jboss/windup/web/services/validators/NotBlankConstraint;
 #67 = Utf8   Ljavax/validation/constraints/Size;
...
private java.lang.String title;
  descriptor: Ljava/lang/String;
  flags: ACC_PRIVATE
  RuntimeVisibleAnnotations:
    0: #50(#62=I#63)
    1: #64(#65=s#66)
    2: #67(#68=I#69,#70=I#63,#65=s#71
10 голосов
/ 14 октября 2010

Исправьте меня, если я ошибаюсь, но я подумал, что аннотации удаляются из классов компилятором, если только вы не используете аннотацию @Retention (RetentionPolicy.RUNTIME) для самой аннотации, информация не будет сохранена в классе файл. Если аннотации сохраняются в файле классов, вы можете использовать javap (часть jdk), чтобы увидеть их:

javap my.package.MyClass

Обновление: для этого требуется JDK7, javap JDK6 не печатает аннотации, но вы можете использовать следующие инструменты с веб-сайта Университета Вашингтона для извлечения информации аннотации:

аннотации-коммунальные услуги

...