如何通过命令行查看java类文件的注释?

2022-09-01 15:37:50

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

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

我已经用谷歌搜索了一段时间,没有运气。:(


答案 1

将 -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

答案 2

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

javap my.package.MyClass

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

注释实用程序