[Soot-list] CallGraph Test Problem

Marc-André Laverdière marc-andre.laverdiere-papineau at polymtl.ca
Thu Feb 20 14:53:03 EST 2014


Hello,

I had that error before. It happened that I had a jar with the source as
well as the bytecode side by side. Just delete the .java in the jar and
you should be fine.

Marc-André Laverdière-Papineau
Doctorant - PhD Candidate

On 02/20/2014 09:04 AM, qpj wrote:
> 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
> 
> 
> _______________________________________________
> Soot-list mailing list
> Soot-list at sable.mcgill.ca
> http://mailman.cs.mcgill.ca/mailman/listinfo/soot-list
> 


More information about the Soot-list mailing list