[Soot-list] forceResolve NullPointerException
glauco cardoso
glaucogoca at gmail.com
Thu Mar 9 12:12:41 EST 2017
Dears,
I'm trying to use soot to implement my own flow analysis transformer.
I created a plugin for eclipse to try to get the project classpath and
execute soot with my configuration.
This is my configuration
Options.v().set_validate(false);
Options.v().set_src_prec(Options.src_prec_java);
Options.v().set_output_dir(this.directoryOutputName.getText());
Options.v().set_output_format(Options.output_format_S);
Options.v().set_allow_phantom_refs(true);
Options.v().set_xml_attributes(false);
Options.v().set_force_overwrite(true);
Options.v().set_whole_shimple(true);
Options.v().set_soot_classpath(urls.toString());
Options.v().set_whole_program(true);
Options.v().set_app(true);
Options.v().set_via_shimple(true);
Scene.v().loadNecessaryClasses();
SootClass c = Scene.v().forceResolve(returnFullClassName(),
SootClass.BODIES); // ERROR HERE!!
c.setApplicationClass();
SootMethod method = c.getMethodByName(this.methodName.getText());//main
List<SootMethod> entryPoints = new ArrayList<SootMethod>();
entryPoints.add(method);
Scene.v().setEntryPoints(entryPoints);
Options.v().set_include(sourcePackage);
PackManager v = PackManager.v();
Pack stp = v.getPack("stp");
ShimpleBodyTransformer bodyTransformer = new ShimpleBodyTransformer();
stp.add(new Transform("stp.mytransformer", bodyTransformer));
v.runPacks();
When I call *Scene.v().forceResolve *for the first time it throws this
exception:
MESSAGE Unhandled event loop exception
!STACK 0
java.lang.Error: Error: Failed to load java.lang.CharSequence.
at soot.JastAddJ.PathPart.getCompilationUnit(PathPart.java:109)
at soot.JastAddJ.Program.getCompilationUnit(Program.java:873)
at soot.JastAddJ.Program.getLibCompilationUnit_compute(Program.java:1517)
at soot.JastAddJ.Program.getLibCompilationUnit(Program.java:1500)
at soot.JastAddJ.Program.lookupLibType_compute(Program.java:1465)
at soot.JastAddJ.Program.lookupLibType(Program.java:1433)
at soot.JastAddJ.Program.lookupType_compute(Program.java:1412)
at soot.JastAddJ.Program.lookupType(Program.java:1393)
at soot.JastAddJ.Program.Define_TypeDecl_lookupType(Program.java:1981)
... ommited
Caused by: java.lang.NullPointerException
at soot.JastAddJ.BytecodeParser.parseThisClass(BytecodeParser.java:439)
at soot.JastAddJ.BytecodeParser.parseTypeDecl(BytecodeParser.java:423)
at soot.JastAddJ.BytecodeParser.parse(BytecodeParser.java:331)
at soot.JastAddJ.BytecodeParser.read(BytecodeParser.java:27)
at soot.JastAddJ.PathPart.getCompilationUnit(PathPart.java:87)
... 122 more
But, when I run my program for the second time it works!
I don't know why it happens. There are some problem on classpath order? Or
there are any problem in my code to set soot configuration and run?
Thanks in advanced!
Glauco Cardoso
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mailman.CS.McGill.CA/pipermail/soot-list/attachments/20170309/ee2287de/attachment-0001.html>
More information about the Soot-list
mailing list