<div dir="ltr">Hi all,<div><br></div><div><p class="MsoNormal">I’m trying to run one of the Soot examples found in the
wiki in all classes in a directory. But got this error:</p><p class="MsoNormal"><br></p><p class="MsoNormal">resolving [from .java]: TestClass1</p><p class="MsoNormal">Exception in thread "main" java.lang.Error: Error loading java.lang.CharSequence</p><p class="MsoNormal"><span class="" style="white-space:pre">        </span>at soot.JastAddJ.PathPart.getCompilationUnit(PathPart.java:128)</p><p class="MsoNormal"><span class="" style="white-space:pre">        </span>at soot.JastAddJ.Program.getCompilationUnit(Program.java:858)</p><p class="MsoNormal"><span class="" style="white-space:pre">        </span>at soot.JastAddJ.Program.getLibCompilationUnit_compute(Program.java:1531)</p><p class="MsoNormal"><span class="" style="white-space:pre">        </span>at soot.JastAddJ.Program.getLibCompilationUnit(Program.java:1514)</p><p class="MsoNormal"><span class="" style="white-space:pre">        </span>at soot.JastAddJ.Program.lookupLibType_compute(Program.java:1479)</p><p class="MsoNormal"><span class="" style="white-space:pre">        </span>at soot.JastAddJ.Program.lookupLibType(Program.java:1447)</p><p class="MsoNormal"><span class="" style="white-space:pre">        </span>at soot.JastAddJ.Program.lookupType_compute(Program.java:1426)</p><p class="MsoNormal"><span class="" style="white-space:pre">        </span>at soot.JastAddJ.Program.lookupType(Program.java:1407)</p><p class="MsoNormal"><span class="" style="white-space:pre">        </span>at soot.JastAddJ.Program.Define_TypeDecl_lookupType(Program.java:1995)</p><p class="MsoNormal"><span class="" style="white-space:pre">        </span>at soot.JastAddJ.ASTNode.Define_TypeDecl_lookupType(ASTNode.java:1657)</p><p class="MsoNormal"><span class="" style="white-space:pre">        </span>at soot.JastAddJ.ASTNode.Define_TypeDecl_lookupType(ASTNode.java:1657)</p><p class="MsoNormal"><span class="" style="white-space:pre">        </span>at soot.JastAddJ.ASTNode.Define_TypeDecl_lookupType(ASTNode.java:1657)</p><p class="MsoNormal"><span class="" style="white-space:pre">        </span>at soot.JastAddJ.ASTNode.Define_TypeDecl_lookupType(ASTNode.java:1657)</p><p class="MsoNormal"><span class="" style="white-space:pre">        </span>at soot.JastAddJ.ASTNode.Define_TypeDecl_lookupType(ASTNode.java:1657)</p><p class="MsoNormal"><span class="" style="white-space:pre">        </span>at soot.JastAddJ.ASTNode.Define_TypeDecl_lookupType(ASTNode.java:1657)</p><p class="MsoNormal"><span class="" style="white-space:pre">        </span>at soot.JastAddJ.ASTNode.Define_TypeDecl_lookupType(ASTNode.java:1657)</p><p class="MsoNormal"><span class="" style="white-space:pre">        </span>at soot.JastAddJ.ASTNode.Define_TypeDecl_lookupType(ASTNode.java:1657)</p><p class="MsoNormal"><span class="" style="white-space:pre">        </span>at soot.JastAddJ.Expr.lookupType(Expr.java:1186)</p><p class="MsoNormal"><span class="" style="white-space:pre">        </span>at soot.JastAddJ.TypeAccess.decls_compute(TypeAccess.java:425)</p><p class="MsoNormal"><span class="" style="white-space:pre">        </span>at soot.JastAddJ.TypeAccess.decls(TypeAccess.java:414)</p><p class="MsoNormal"><span class="" style="white-space:pre">        </span>at soot.JastAddJ.TypeAccess.refined_TypeScopePropagation_TypeAccess_decl(TypeAccess.java:387)</p><p class="MsoNormal"><span class="" style="white-space:pre">        </span>at soot.JastAddJ.TypeAccess.decl_compute(TypeAccess.java:460)</p><p class="MsoNormal"><span class="" style="white-space:pre">        </span>at soot.JastAddJ.TypeAccess.decl(TypeAccess.java:452)</p><p class="MsoNormal"><span class="" style="white-space:pre">        </span>at soot.JastAddJ.TypeAccess.type_compute(TypeAccess.java:590)</p><p class="MsoNormal"><span class="" style="white-space:pre">        </span>at soot.JastAddJ.TypeAccess.type(TypeAccess.java:583)</p><p class="MsoNormal"><span class="" style="white-space:pre">        </span>at soot.JastAddJ.ParameterDeclaration.type_compute(ParameterDeclaration.java:479)</p><p class="MsoNormal"><span class="" style="white-space:pre">        </span>at soot.JastAddJ.ParameterDeclaration.type(ParameterDeclaration.java:472)</p><p class="MsoNormal"><span class="" style="white-space:pre">        </span>at soot.JastAddJ.MethodDecl.signature_compute(MethodDecl.java:1355)</p><p class="MsoNormal"><span class="" style="white-space:pre">        </span>at soot.JastAddJ.MethodDecl.signature(MethodDecl.java:1343)</p><p class="MsoNormal"><span class="" style="white-space:pre">        </span>at soot.JastAddJ.TypeDecl.localMethodsSignatureMap_compute(TypeDecl.java:2527)</p><p class="MsoNormal"><span class="" style="white-space:pre">        </span>at soot.JastAddJ.TypeDecl.localMethodsSignatureMap(TypeDecl.java:2515)</p><p class="MsoNormal"><span class="" style="white-space:pre">        </span>at soot.JastAddJ.ClassDecl.methodsSignatureMap_compute(ClassDecl.java:1102)</p><p class="MsoNormal"><span class="" style="white-space:pre">        </span>at soot.JastAddJ.ClassDecl.methodsSignatureMap(ClassDecl.java:1094)</p><p class="MsoNormal"><span class="" style="white-space:pre">        </span>at soot.JastAddJ.TypeDecl$2.<init>(TypeDecl.java:468)</p><p class="MsoNormal"><span class="" style="white-space:pre">        </span>at soot.JastAddJ.TypeDecl.methodsIterator(TypeDecl.java:467)</p><p class="MsoNormal"><span class="" style="white-space:pre">        </span>at soot.JastAddJ.TypeDecl.methodsNameMap_compute(TypeDecl.java:2468)</p><p class="MsoNormal"><span class="" style="white-space:pre">        </span>at soot.JastAddJ.TypeDecl.methodsNameMap(TypeDecl.java:2459)</p><p class="MsoNormal"><span class="" style="white-space:pre">        </span>at soot.JastAddJ.TypeDecl.memberMethods(TypeDecl.java:2431)</p><p class="MsoNormal"><span class="" style="white-space:pre">        </span>at soot.JastAddJ.AbstractDot.Define_Collection_lookupMethod(AbstractDot.java:766)</p><p class="MsoNormal"><span class="" style="white-space:pre">        </span>at soot.JastAddJ.Expr.lookupMethod(Expr.java:1032)</p><p class="MsoNormal"><span class="" style="white-space:pre">        </span>at soot.JastAddJ.MethodAccess.decls_compute(MethodAccess.java:1094)</p><p class="MsoNormal"><span class="" style="white-space:pre">        </span>at soot.JastAddJ.MethodAccess.decls(MethodAccess.java:1086)</p><p class="MsoNormal"><span class="" style="white-space:pre">        </span>at soot.JastAddJ.MethodAccess.decl_compute(MethodAccess.java:1128)</p><p class="MsoNormal"><span class="" style="white-space:pre">        </span>at soot.JastAddJ.MethodAccess.decl(MethodAccess.java:1120)</p><p class="MsoNormal"><span class="" style="white-space:pre">        </span>at soot.JastAddJ.MethodAccess.refined_TypeAnalysis_MethodAccess_type(MethodAccess.java:913)</p><p class="MsoNormal"><span class="" style="white-space:pre">        </span>at soot.JastAddJ.MethodAccess.type_compute(MethodAccess.java:1264)</p><p class="MsoNormal"><span class="" style="white-space:pre">        </span>at soot.JastAddJ.MethodAccess.type(MethodAccess.java:1249)</p><p class="MsoNormal"><span class="" style="white-space:pre">        </span>at soot.JastAddJ.AbstractDot.type_compute(AbstractDot.java:604)</p><p class="MsoNormal"><span class="" style="white-space:pre">        </span>at soot.JastAddJ.AbstractDot.type(AbstractDot.java:597)</p><p class="MsoNormal"><span class="" style="white-space:pre">        </span>at soot.JastAddJ.IfStmt.typeCheck(IfStmt.java:138)</p><p class="MsoNormal"><span class="" style="white-space:pre">        </span>at soot.JastAddJ.ASTNode.collectErrors(ASTNode.java:1284)</p><p class="MsoNormal"><span class="" style="white-space:pre">        </span>at soot.JastAddJ.ASTNode.collectErrors(ASTNode.java:1292)</p><p class="MsoNormal"><span class="" style="white-space:pre">        </span>at soot.JastAddJ.ASTNode.collectErrors(ASTNode.java:1292)</p><p class="MsoNormal"><span class="" style="white-space:pre">        </span>at soot.JastAddJ.ASTNode.collectErrors(ASTNode.java:1292)</p><p class="MsoNormal"><span class="" style="white-space:pre">        </span>at soot.JastAddJ.ASTNode.collectErrors(ASTNode.java:1292)</p><p class="MsoNormal"><span class="" style="white-space:pre">        </span>at soot.JastAddJ.ASTNode.collectErrors(ASTNode.java:1292)</p><p class="MsoNormal"><span class="" style="white-space:pre">        </span>at soot.JastAddJ.ASTNode.collectErrors(ASTNode.java:1292)</p><p class="MsoNormal"><span class="" style="white-space:pre">        </span>at soot.JastAddJ.ASTNode.collectErrors(ASTNode.java:1292)</p><p class="MsoNormal"><span class="" style="white-space:pre">        </span>at soot.JastAddJ.ASTNode.collectErrors(ASTNode.java:1292)</p><p class="MsoNormal"><span class="" style="white-space:pre">        </span>at soot.JastAddJ.CompilationUnit.errorCheck(CompilationUnit.java:178)</p><p class="MsoNormal"><span class="" style="white-space:pre">        </span>at soot.JastAddInitialResolver.formAst(JastAddInitialResolver.java:58)</p><p class="MsoNormal"><span class="" style="white-space:pre">        </span>at soot.JavaClassSource.resolve(JavaClassSource.java:54)</p><p class="MsoNormal"><span class="" style="white-space:pre">        </span>at soot.SootResolver.bringToHierarchy(SootResolver.java:237)</p><p class="MsoNormal"><span class="" style="white-space:pre">        </span>at soot.SootResolver.bringToSignatures(SootResolver.java:264)</p><p class="MsoNormal"><span class="" style="white-space:pre">        </span>at soot.SootResolver.bringToBodies(SootResolver.java:302)</p><p class="MsoNormal"><span class="" style="white-space:pre">        </span>at soot.SootResolver.processResolveWorklist(SootResolver.java:161)</p><p class="MsoNormal"><span class="" style="white-space:pre">        </span>at soot.SootResolver.resolveClass(SootResolver.java:129)</p><p class="MsoNormal"><span class="" style="white-space:pre">        </span>at soot.Scene.loadClass(Scene.java:694)</p><p class="MsoNormal"><span class="" style="white-space:pre">        </span>at soot.Scene.loadClassAndSupport(Scene.java:679)</p><p class="MsoNormal"><span class="" style="white-space:pre">        </span>at fr.irisa.diverse.SwapSootMain.main(SwapSootMain.java:48)</p><p class="MsoNormal"><span class="" style="white-space:pre">        </span>at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)</p><p class="MsoNormal"><span class="" style="white-space:pre">        </span>at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)</p><p class="MsoNormal"><span class="" style="white-space:pre">        </span>at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)</p><p class="MsoNormal"><span class="" style="white-space:pre">        </span>at java.lang.reflect.Method.invoke(Method.java:483)</p><p class="MsoNormal"><span class="" style="white-space:pre">        </span>at com.intellij.rt.execution.application.AppMain.main(AppMain.java:134)</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal">I tried both command line and manually calling the Soot API,
so far no look, same error both.</p><p class="MsoNormal"><br></p>
<p class="MsoNormal">Here is my code for the command line:</p><p class="MsoNormal"><br></p><p class="MsoNormal">String[] sootParams = new String[] { "-cp", ".", "-pp", "-process-dir", p.getProperty("cp"), "-d", p.getProperty("output"), "-v" };</p><p class="MsoNormal">soot.Main.main(sootParams);</p>
<p class="MsoNormal"> </p><p class="MsoNormal">===============</p><p class="MsoNormal"><br></p>
<p class="MsoNormal">And here is my code for the manual calls to the API:</p><p class="MsoNormal"><br></p><p class="MsoNormal"> public static void configure(String classpath) {</p><p class="MsoNormal"> Options.v().set_verbose(true);</p><p class="MsoNormal"> Options.v().set_process_dir(Arrays.asList(classpath));</p><p class="MsoNormal"> Options.v().set_keep_line_number(true);</p><p class="MsoNormal"> Options.v().set_src_prec(Options.src_prec_class);</p><p class="MsoNormal"><br></p><p class="MsoNormal"> String cp = System.getProperty("java.class.path").replace("\\", "/");</p><p class="MsoNormal"> Options.v().set_soot_classpath(cp);</p><p class="MsoNormal"><br></p><p class="MsoNormal"> Options.v().set_prepend_classpath(true);</p><p class="MsoNormal"> Options.v().set_allow_phantom_refs(true);</p><p class="MsoNormal"><br></p><p class="MsoNormal"> PhaseOptions.v().setPhaseOption("bb", "off");</p><p class="MsoNormal"> PhaseOptions.v().setPhaseOption("tag.ln", "on");</p><p class="MsoNormal"> PhaseOptions.v().setPhaseOption("jj.a", "on");</p><p class="MsoNormal"> PhaseOptions.v().setPhaseOption("jj.ule", "on");</p><p class="MsoNormal"><br></p><p class="MsoNormal"> Options.v().set_whole_program(true);</p><p class="MsoNormal"> }</p><p class="MsoNormal"><br></p><p class="MsoNormal"> public static void main(String[] args) throws IOException {</p><p class="MsoNormal"> Properties p = new Properties();</p><p class="MsoNormal"> p.load(SwapSootMain.class.getClassLoader().getResourceAsStream("soot.properties"));</p><p class="MsoNormal"><br></p><p class="MsoNormal"> configure(p.getProperty("cp"));</p><p class="MsoNormal"><br></p><p class="MsoNormal"> SootClass c = Scene.v().loadClassAndSupport("TestClass1");</p><p class="MsoNormal"> c.setApplicationClass();</p><p class="MsoNormal"> // Retrieve the method and its body</p><p class="MsoNormal"> SootMethod m = c.getMethodByName("foo");</p><p class="MsoNormal"> Body b = m.retrieveActiveBody();</p><p class="MsoNormal"> // Instruments bytecode</p><p class="MsoNormal"> new GuaranteedDefs(new ExceptionalUnitGraph(b));</p><p class="MsoNormal"><span class="" style="white-space:pre">        </span>}</p><p class="MsoNormal"><br></p><p class="MsoNormal">Here is the value of the System.getProperty("java.class.path").replace("\\", "/"):</p><p class="MsoNormal"><br></p><p class="MsoNormal">C:/Program Files/Java/jdk1.8.0_05/jre/lib/resources.jar</p><p class="MsoNormal">C:/Program Files/Java/jdk1.8.0_05/jre/lib/rt.jar</p><p class="MsoNormal">C:/Program Files/Java/jdk1.8.0_05/jre/lib/ext/access-bridge-64.jar</p><p class="MsoNormal">C:/Program Files/Java/jdk1.8.0_05/jre/lib/ext/cldrdata.jar</p><p class="MsoNormal">C:/Program Files/Java/jdk1.8.0_05/jre/lib/ext/dnsns.jar</p><p class="MsoNormal">C:/Program Files/Java/jdk1.8.0_05/jre/lib/ext/jaccess.jar</p><p class="MsoNormal">C:/Program Files/Java/jdk1.8.0_05/jre/lib/ext/jfxrt.jar</p><p class="MsoNormal">C:/Program Files/Java/jdk1.8.0_05/jre/lib/ext/localedata.jar</p><p class="MsoNormal">C:/Program Files/Java/jdk1.8.0_05/jre/lib/ext/nashorn.jar</p><p class="MsoNormal">C:/Program Files/Java/jdk1.8.0_05/jre/lib/ext/sunec.jar</p><p class="MsoNormal">C:/Program Files/Java/jdk1.8.0_05/jre/lib/ext/sunjce_provider.jar</p><p class="MsoNormal">C:/Program Files/Java/jdk1.8.0_05/jre/lib/ext/sunmscapi.jar</p><p class="MsoNormal">C:/Program Files/Java/jdk1.8.0_05/jre/lib/ext/sunpkcs11.jar</p><p class="MsoNormal">C:/Program Files/Java/jdk1.8.0_05/jre/lib/ext/zipfs.jar</p><p class="MsoNormal">C:/MarcelStuff/PROJECTS/DIVERSE/soot-example/target/classes</p><p class="MsoNormal">C:/Users/marodrig/.m2/repository/edu/sable/soot/nightly-build/soot-nightly-build.jar</p><p class="MsoNormal">C:/Program Files (x86)/JetBrains/IntelliJ IDEA Community Edition 14.0.2/lib/idea_rt.jar</p><p class="MsoNormal"><br></p><p class="MsoNormal">Any ideas what could be happening?</p><p class="MsoNormal"><br></p><p class="MsoNormal">Thanks you all. </p><p class="MsoNormal">Marcelino</p><p class="MsoNormal"><br></p></div></div>