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

Output class file for a class object created in Soot

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

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

经过多次搜索,我找到了适当的 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();