[Soot-list] [HELP!!]A Question about Soot

Eric Bodden eric.bodden at mail.mcgill.ca
Mon Jul 27 05:45:05 EDT 2009


Hi Haihao.

I am sorry but I have no idea. sun.misc.Version is o my system in
rt.jar. So I can just guess that something is wrong with the classpath
that you provide to Soot.

Eric

2009/7/27 Haihao Shen <haihaoshen at gmail.com>:
> Hi Eric,
>>
>> I am Haihao, 2nd year master student. Currently, I am using Soot to build
>> a call graph. However, some errors appear as follows:
>>
>> Exception in thread "main" java.lang.RuntimeException:
>> Aborting: can't find classfile sun.misc.Version
>>   at soot.Scene.getSootClass(Scene.java:442)
>>   at soot.coffi.CFG.generateJimple(CFG.java:4444)
>>   at soot.coffi.CFG.jimplify(CFG.java:1259)
>>   at soot.coffi.CFG.jimplify(CFG.java:947)
>>   at soot.coffi.CoffiMethodSource.getBody(CoffiMethodSource.java:100)
>>   at soot.SootMethod.getBodyFromMethodSource(SootMethod.java:82)
>>   at soot.SootMethod.retrieveActiveBody(SootMethod.java:329)
>>   at
>> soot.jimple.toolkits.callgraph.OnFlyCallGraphBuilder.processNewMethod(OnFlyCallGraphBuilder.java:181)
>>   at
>> soot.jimple.toolkits.callgraph.OnFlyCallGraphBuilder.processReachables(OnFlyCallGraphBuilder.java:81)
>>   at
>> soot.jimple.toolkits.callgraph.CallGraphBuilder.build(CallGraphBuilder.java:84)
>>   at
>> soot.jimple.toolkits.callgraph.CHATransformer.internalTransform(CHATransformer.java:43)
>>   at soot.SceneTransformer.transform(SceneTransformer.java:39)
>>   at soot.SceneTransformer.transform(SceneTransformer.java:45)
>>   at soot.SceneTransformer.transform(SceneTransformer.java:50)
>>   at cn.edu.sjtu.www.CallGraphExample.main(CallGraphExample.java:30)
>>
>>
>> I have added the rt.jar in soot-classpath like this piece of code:
>>
>>       StringBuffer sb = new StringBuffer();
>>       sb.append(".;E:\\jdk1.5.0_11\\jre\\lib\\rt.jar;");
>>       sb.append("E:\\jdk1.5.0_11\\jre\\lib\\jce.jar;");
>>       sb.append("E:\\jdk1.5.0_11\\jre\\lib\\jsse.jar;");
>>       sb.append("F:\\workspace\\3.2\\project\\StaticCallGraph\\bin;");// I
>> put the binary classfiles in this fold
>>       Scene.v().setSootClassPath(sb.toString());
>>
>>       SootClass mainClass =
>> Scene.v().loadClassAndSupport("designpattern.observer.java.Main");// this
>> class file exists in StaticCallGraph\\bin
>>       mainClass.setApplicationClass();
>>       Scene.v().setMainClass(mainClass);
>>
>>       CHATransformer.v().transform();
>>
>>       SootMethod src = mainClass.getMethodByName("main");
>>       CallGraph cg = Scene.v().getCallGraph();
>>
>>       Iterator targets = new Targets(cg.edgesOutOf(src));
>>       while (targets.hasNext()) {
>>           SootMethod tgt = (SootMethod) targets.next();
>>           System.out.println(src + " may call " + tgt);
>>       }
>>
>> I have tried many times and unfortunately the error is still existing. SO,
>> I am wondering whether you could do me a favor to tell me how to solve this
>> problem.
>>
>>
>> Thank you very much.
>>
>> Best,
>>
>> Haihao
>>
>
>



-- 
Eric Bodden
Sable Research Group, McGill University
Montréal, Québec, Canada


More information about the Soot-list mailing list