[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