【问题标题】:Anyway to get compilation flags used in building a .class file?无论如何要获得用于构建 .class 文件的编译标志?
【发布时间】:2011-02-23 06:15:36
【问题描述】:

我有一堆.class 不是我自己构建的文件。

从这些.class 文件中,是否有可能知道用于构建它们的各种编译标志?诸如...开启或关闭优化,开启或关闭调试信息等。

【问题讨论】:

    标签: java build compilation flags


    【解决方案1】:

    没有主要的 Java 编译器进行任何类型的优化(除了一些常量值折叠)。这通常是为 JVM 在运行时保留的。

    要了解是否生成了带有或不带有调试信息的 .class,请使用 -v 标志对其运行 javap 并查找 LineNumberTable 属性。它们应该看起来像这样:

    行号表: 第 7 行:0 第 8 行:8

    如果该类是使用完整的调试信息(包括局部变量)编译的,那么它还包含一个LocalVariableTable,如下所示:

    本地变量表: 起始长度 插槽名称 签名 0 9 0 argc [Ljava/lang/String;

    一个实际影响输出的编译器标志是-encoding,用于指定输入源文件编码。由于 .class 文件中的字符串文字始终使用 UTF-8,因此无法从 .class 文件中检测到原始源文件编码。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-10-04
      • 1970-01-01
      • 1970-01-01
      • 2010-12-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-05
      相关资源
      最近更新 更多