在Soot中创建的类对象的输出类文件

时间:2018-05-07 15:45:37

标签: java soot

对于测试生成任务,我需要以编程方式生成.class个文件。我使用Soot框架生成代码。让我们说我已经通过Scene.v().makeSootClass("Test")创建了一个类,并添加了一些方法。我现在如何将Soot IR结构的虚拟Java表示编译为实际的.class文件?

文档列出了command line interface的一些输出选项,但我想通过Java中的API以编程方式执行此操作,但我找不到有关如何继续操作的说明。

1 个答案:

答案 0 :(得分:0)

经过多次搜索,我找到了相应的documentation解释来做到这一点。这些文档中的相关代码段就是这个:

String fileName = SourceLocator.v().getFileNameFor(sClass, Options.output_format_class);
OutputStream streamOut = new JasminOutputStream(new FileOutputStream(fileName));
PrintWriter writerOut = new PrintWriter(new OutputStreamWriter(streamOut));

JasminClass jasminClass = new soot.jimple.JasminClass(sClass);
jasminClass.print(writerOut);
writerOut.flush();
streamOut.close();