我有一堆不是我自己构建的 .class
文件。
从这些 .class
文件中,是否可以知道用于构建它们的各种编译标志?诸如...打开或关闭优化、打开或关闭调试信息等。
最佳答案
没有主要的 Java 编译器进行任何类型的优化(除了一些常量值折叠)。这通常保留给 JVM 在运行时完成。
要查明生成的 .class
是否带有调试信息,请使用 -v
标志对其运行 javap
并查看对于 LineNumberTable
属性。它们应该看起来像这样:
LineNumberTable: line 7: 0 line 8: 8
如果该类是使用完整的调试信息(包括局部变量)进行编译的,那么它还包含一个 LocalVariableTable
,如下所示:
LocalVariableTable: Start Length Slot Name Signature 0 9 0 argc [Ljava/lang/String;
实际影响输出的一个编译器标志是-encoding
,用于指定输入源文件编码。由于 .class
文件中的字符串文字始终使用 UTF-8,因此无法检测 .class
文件中的原始源文件编码。
关于java - 无论如何要获取构建 .class 文件时使用的编译标志吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5087633/