如何通过命令行查看java classfile的注释?

是否有一个命令行工具,最好是在JDK中,要么在类文件中打印所有注释,要么将特定注释作为参数进行打印?

如果是这样,是否有一个等效命令可以在jar文件上运行,包含在其中的特定类?

我用Google搜索了一段时间,没有运气。 🙁

如果我错了,请纠正我,但我想,编译器会从类中删除注释,除非您在Annotations本身上使用Annotation @Retention(RetentionPolicy.RUNTIME),该信息将不会保留在类文件中。 如果注释保留在类文件中,您可以使用javap(jdk的一部分)来查看:

javap my.package.MyClass 

更新:这似乎需要JDK7,JDK6的javap不会打印注释,但您可以使用华盛顿大学网站上的以下工具来提取注释信息:

注释公用事业

在javap 1.7或更高版本中使用-verbose或-v标志将显示保留的注释。

例:

 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