Tag: javap

如何使用javap工具在jar文件中打印类结构?

我想使用javap工具列出jar中类文件的方法。 我该怎么做才能列出jar中所有类文件的方法和成员。 现在我能够一次只为一个class级做这件事。 我期待像我说的那样 javap java.lang.* 它应该在java.lang包中登记所有类的方法和成员。 如果javap不具备此function,是否有可用的工具?

如何在eclipse中使用javap?

正如标题所述,我正在尝试使用javap与eclipse但是很难设置它。 我正在尝试使用run菜单中的external tools进行设置,但无法找到正确的Arguments: string以使其正常工作。 基本上我需要能够动态执行我打开的当前文件的东西。

javap和generics的类型擦除

我正在阅读Herbert Schilds关于java中generics的类型擦除。 据说在类上运行javap应该在类型擦除后给我关于public,package protected和protected字段和方法的字节码信息。 但是,我写了以下课程: class Ambiguity{ T ob1; V ob2; void set(T o){ ob1 = o; } void set(V o){ ob2 = o; } } 并在生成的类文件上运行javap并获得以下输出 编译自“Test.java” class Ambiguity { T ob1; V ob2; Ambiguity(); void set(T); void set(V); } 我期待根据我读到的内容看起来像这样的输出。 Compiled from “Test.java” class Ambiguity { java.lang.Object ob1; java.lang.String ob2; Ambiguity(); void set(java.lang.Object); […]

了解常量池的javap输出

在一个非常简单的HelloWorld应用程序上运行javap时,我对常量池周围的输出有一些混淆。 测试代码 public class TestClass { public static void main(String[] args) { System.out.println(“hello world”); } } Javap -c -verbose输出(剪切) // Header + consts 1..22 snipped const #22 = String #23; // hello world const #23 = Asciz hello world; public static void main(java.lang.String[]); Signature: ([Ljava/lang/String;)V Code: Stack=2, Locals=1, Args_size=1 0: getstatic #16; //Field java/lang/System.out:Ljava/io/PrintStream; 3: […]

是否有java的反汇编程序和调试程序(ala OllyDbg / SoftICE for assembler)?

是否有类似于OllyDbg / SoftICE for java的实用程序? 即执行类(来自jar / with class path),并且在没有源代码的情况下,显示中间代码的反汇编,能够逐步执行/跳过/搜索引用/编辑内存中的特定中间代码/将编辑应用于文件。 。 如果没有,是否甚至可以写这样的东西(假设我们愿意在调试期间没有热点的情况下生活)? 编辑:我不是在谈论JAD或JD或Cavaj。 这些都是很好的反编译器,但我不想要一个反编译器有几个原因,最值得注意的是它们的输出不正确(充其量,有时只是简单的错误)。 我不是在寻找一个神奇的“编译到java代码的字节” – 我想看到即将执行的实际字节。 此外,我希望能够更改这些字节(就像在汇编调试器中一样),并希望将更改的部分写回类文件。 Edit2:我知道javap存在 – 但它只有一种方式(并且没有任何分析)。 示例(代码取自vmspec文档):从java代码中,我们使用“javac”来编译它: void setIt(int value) { i = value; } int getIt() { return i; } 到java .class文件。 使用javap -c我可以得到这个输出: Method void setIt(int) 0 aload_0 1 iload_1 2 putfield #4 5 return Method int getIt() […]