java - 在 Soot 中创建的类对象的输出类文件
问题描述
对于测试生成任务,我需要以.class
编程方式生成文件。我正在使用 Soot 框架来生成代码。假设我已经创建了一个类Scene.v().makeSootClass("Test")
并为其添加了一些方法。我现在如何将 Soot IR 结构的虚拟 Java 表示编译为实际.class
文件?
文档列出了他们的命令行界面的一些输出选项,但我想通过 Java 中的 API 以编程方式执行此操作,但我找不到有关如何继续的说明。
解决方案
经过多次搜索,我找到了解释执行此操作的相应文档。这些文档中的相关代码片段是这个:
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();
推荐阅读
- matlab - 如何在 Qt 中录制音频文件并在 MATLAB 中读取?
- vb.net - 从 Windows Server 为并发用户运行具有数据库访问权限的程序
- apache-spark - 无法访问 pyspark 中的本地文件
- mysql - 在 SQL 中删除触发器中的重复行
- c++ - 为什么程序员同时使用 std::bad_alloc 和 std::exception。仅 std::exception 是不够的
- powershell - 从 Poweshell 执行 PsExec64.exe 时抛出“无法处理来自‘错误’流的 XML”
- python - 如何修复不平衡的列 MultiIndex?
- android - 从 AlarmReceiver 中的其他 Activity 调用方法
- php - 编程中类似的变量或文件名
- rust - 如何在新线程中调用递归闭包?