为什么 Soot 总是说我要加载的类是幻影类,即使它不存在

  • 本文关键字:幻影 不存在 加载 Soot 我要 soot
  • 更新时间 :
  • 英文 :


这个烟灰类加载一个类并打印方法的数量。当我给出要加载的类的正确名称时,它说该类是幻影。 同样,当类不存在时,它会给出相同的消息。我不知道我做错了什么。

public class Loader {
    public static void main(String args[]){
             List<String> projectPaths;
            String classPath;
             String highLevelPackageName;
            classPath = "C:\Users\Alastair\workspace1\Interview\bin";
            projectPaths = new ArrayList<String>();
            projectPaths.add(classPath);
            Options.v().set_allow_phantom_refs(true);
            Options.v().set_whole_program(true);
            Options.v().set_app(true);
            Options.v().set_no_bodies_for_excluded(true);
            Options.v().set_process_dir(projectPaths);
            String previousClassPath = Scene.v().getSootClassPath();
            previousClassPath += ";" + classPath;
            Scene.v().setSootClassPath(previousClassPath);

            SootClass sootClass = Scene.v().loadClassAndSupport("Diagonal.class");
            sootClass.setApplicationClass();
            System.out.println(sootClass.getMethodCount());
    }
}

这是我尝试加载的类。

public class Diagonal {
    public static void main(String args[]) {
        diagonal();
        lefttriangle();
        righttriangle();
        tree();
    }
    public static void diagonal() {
        for (int i = 0; i < 5; i++) {
            for (int j = 0; j < 5; j++) {
                if (i == j) {
                    System.out.print("*");
                } else {
                    System.out.print(" ");
                }
            }
            System.out.println("");
        }
    }
    public static void lefttriangle() {
        for(int i=0;i<6;i++){
            for(int j=0;j<6;j++){
                if(j<=i){
                    System.out.print("*");
                }
                else{
                    System.out.print(" ");
                }
            }
            System.out.println("");
        }
    }
    public static void righttriangle(){
        for(int i=0;i<7;i++){
            for(int j=7;j>0;j--){
                if(i<j){
                    System.out.print(" ");
                }else{
                    System.out.print("*");
                }
            }
            System.out.println("");
        }
    }
    public static void tree(){
        for(int i=1;i<=7;i++){
            for(int j=7;j>i;j--){
                    System.out.print(" ");
            }
            for(int j = 1; j < i*2; j++){
                    System.out.print("*");
            }
            System.out.println("");
        }
    }

}

Phantom 类是 Soot 类路径上不存在的类的隐式创建模型。要解决此问题,请确保您引用的类位于 Sot 的类路径上。

相关内容

  • 没有找到相关文章

最新更新