[Soot-list] CallGraph Test Problem
qpj
412832527 at qq.com
Thu Feb 20 09:04:57 EST 2014
Hi,
When I test the code from here http://code.google.com/p/call-graph-implementation/source/browse/CallGraphExatraction/src,
the exception came:
Syed
Soot started on Thu Feb 20 21:53:30 CST 2014
soot.JavaClassProvider$JarException: Class javax.annotation.Nullable was found in a .jar, but Polyglot doesn't support reading source files out of a .jar
at soot.JavaClassProvider.find(JavaClassProvider.java:79)
at soot.SourceLocator.getClassSource(SourceLocator.java:72)
at soot.SootResolver.bringToHierarchy(SootResolver.java:197)
at soot.SootResolver.bringToSignatures(SootResolver.java:250)
at soot.SootResolver.bringToBodies(SootResolver.java:291)
at soot.SootResolver.processResolveWorklist(SootResolver.java:161)
at soot.SootResolver.resolveClass(SootResolver.java:127)
at soot.Scene.loadClass(Scene.java:608)
at soot.Scene.loadClassAndSupport(Scene.java:594)
at soot.Scene.loadNecessaryClass(Scene.java:1210)
at soot.Scene.loadNecessaryClasses(Scene.java:1224)
at soot.Main.run(Main.java:167)
at soot.Main.main(Main.java:141)
at day28.SceneTest.main(SceneTest.java:50)
my code:
package day28;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import soot.G;
import soot.MethodOrMethodContext;
import soot.PackManager;
import soot.Scene;
import soot.SceneTransformer;
import soot.SootClass;
import soot.SootMethod;
import soot.Transform;
import soot.jimple.toolkits.callgraph.CHATransformer;
import soot.jimple.toolkits.callgraph.CallGraph;
import soot.jimple.toolkits.callgraph.Targets;
import soot.options.Options;
public class SceneTest {
public static void main(String args[]) {
List<String> argsList = new ArrayList<String>(Arrays.asList(args));
argsList.addAll(Arrays.asList(new String[] { "-w", "-main-class",
"day28.SceneTest","day28.SceneTest"}));// main-class
args = argsList.toArray(new String[0]);//将argsList存入到String[0]中
Options.v().set_soot_classpath("D:/Sootlib/jce.jar;D:/soot.jar;" +
"D:/Sootlib/rt.jar;D:/Sootlib/jasminclasses-2.3.0.jar;D:/Sootlib/polyglotclasses-1.3.5.jar;D:/WorkSpace/Administrator/workspace/SootStudy/bin");
try{
System.out.println("Syed");
PackManager.v().getPack("wjtp").add(new Transform("wjtp.ifds", new SceneTransformer() {
@Override
protected void internalTransform(String phaseName,Map options) {
CHATransformer.v().transform();
//SootClass a = Scene.v().getSootClass("day28.HelloWorld");
System.out.println("Syed and Ali inside :D");
CallGraph callGraph = Scene.v().getCallGraph();
Scene.v();
SootMethod src = Scene.v().getMainClass().getMethodByName("printMethod");
Iterator<MethodOrMethodContext> targets = new Targets(callGraph.edgesOutOf(src));
while (targets.hasNext()) {
SootMethod tgt = (SootMethod) targets.next();
System.out.println(src + " may call " + tgt);
}
}
}));
soot.Main.main(args);
System.out.println("Syed_Soot_out");
}catch(Exception e){
e.printStackTrace();}
}
public void printMethod() {
String name="syed";
System.out.println("This is the name:"+ name);
}
}
The exception is strange, sometimes it can get the right result, but now it doesn't work. I hope some can help me.
Xiangxing
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mailman.cs.mcgill.ca/pipermail/soot-list/attachments/20140220/d11df0cd/attachment-0001.html
More information about the Soot-list
mailing list