Подтвердить что ты не робот

Как просмотреть аннотацию java classfile через командную строку?

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

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

Я искал это какое-то время и не повезло.: (

4b9b3361

Ответ 1

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

javap my.package.MyClass

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

Аннотации-утилиты

Ответ 2

Используя флаг -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