繁体   English   中英

在Eclipse中动态加载Soot的Java类文件

[英]Loading Java class files for Soot dynamically in Eclipse

我目前正在开发一个程序,该程序将两个控件-流程图相互比较(这些图表是用Soot生成的)。 这些图属于两个不同的类别。 因此每一个CFG。

目前,我正在使用以下方法加载类:

   SootClass sClassNew = Scene.v().loadClassAndSupport("Calc");     
   sClassNew.setApplicationClass();

   SootClass sClassOld = Scene.v().loadClassAndSupport("Calc2");        
   sClassOld.setApplicationClass()

如果我通过在项目上单击鼠标右键来添加包含Calc.java和Calc2.java类的文件夹,则此方法有效。 Java构建路径 添加外部类文件夹| 选择文件夹。

不幸的是,这并不是我想要的,因为:

  1. 这两个类的名称相同,因为它们是彼此不同的版本。 换句话说,一个类是另一个的更新版本。
  2. 执行该程序时,我希望使用户能够选择文件,以便构建cfg。 因此,我必须消除上述步骤,以便添加类,并且需要一种在运行时添加它们的方法。

一个重要的注意事项是,Soot只会从Soot的类路径中找到的JAR文件和目录中加载文件。 有谁知道我如何解决这两个问题?

煤烟并未真正解决这个问题。 它的主要数据结构是Scene,在其中包含其所要说明的所有类,并且每个类名只能包含一个类实例,而该场景不能有两个不同的版本。

话虽如此,我们最近已经建立了一个名为Reviser的Soot扩展(目前正在提交中): https : //github.com/StevenArzt/reviser Reviser逐步更新程序的过程间控制流程图和IFDS / IDE分析信息。 。 为了使这项工作奏效,我们不得不反复研究Soot的类加载机制。 这绝非易事。 如果您对这些细节感兴趣,请发送个人邮件给Steven Arzt和我本人。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM