我有一个项目,其中包含一个文件夹“输入”,其中包含一些 java 文件(例如 test.java)。这个文件夹不是源根目录,这是正确的。我只想用我的程序分析输入文件夹中的文件。一个目标是从输入文件夹中的文件中获取字节码并将其保存在字符串中。我读了很多关于从类(java 代理,bcel)获取字节码的内容,但我不太清楚应该如何开始。你对我有什么想法和建议吗?
编辑: 我编译了我的文件并将其保存到一个字节数组中。我使用了某人提到的 javaassist 库。我的代码现在是:
ClassPool pool = ClassPool.getDefault();
CtClass cc = pool.get("Test");
byte[] b = cc.toBytecode();
System.out.println(Arrays.toString(b));
结果我得到:
[-54, -2, -70, -66, 0, 0, 0, 52, 0, 93, 10, 0, 25, 0, 52, 8, 0, 53, 7, 0,...,115]
如何从字节数组中获取“人类可读”形式的字节码,例如:
iconst_0 // 03
istore_0 // 3b
iinc 0, 1 // 84 00 01
iload_0 // 1a
iconst_2 // 05
imul // 68
istore_0 // 3b
goto -7 // a7 ff f9
有人有什么想法吗?