[Soot-list] a class resolution exception
Eric Bodden
eric.bodden at mail.mcgill.ca
Sat Mar 22 04:59:05 EDT 2008
Hi Li.
This has to be a classpath issue. To me it looks like there is a java
runtime library on your soot classpath that is different from the
runtime library that was used to compile the program you are
analyzing. If you simmply ran the program with that JDK and were to
execute the line of code in question you should be hitting the same
error at runtime.
Eric
On 22/03/2008, li xin <li-xin at jaist.ac.jp> wrote:
> Hi,
>
> I come across a class resolution excpetion when soot performs the on-the-fly
> points-to analysis. The command line options I used is as follows,
> "--app -w -f J -p cg.spark enabled:true -keep-line-number ClassName"
>
> I ever attempted to settle it by updating the JDK version I used or feeding
> the "-i java." option, however it didnt help.
> Could anyone please help me out?
>
>
> Many Thanks, Li
>
> --
> [Call Graph] For information on where the call graph may be incomplete, use
> the verbose option to the cg phase.
> [Spark] Pointer Assignment Graph in 4.8 seconds.
> [Spark] Type masks in 1.1 seconds.
> [Spark] Pointer Graph simplified in 0.0 seconds.
> Exception in thread "main"
> soot.AbstractSootMethodRef$ClassResolutionFailedException:
> Class java.lang.Long doesn't have method getChars([long, int, char[]]) :
> void; failed to resolve in superclasses and interfacesLooking in
> java.lang.Long which has methods [<java.lang.Long: byte byteValue()>,
> <java.lang.Long: double doubleValue()>, <java.lang.Long: float
> floatValue()>, <java.lang.Long: int hashCode()>, <java.lang.Long: int
> intValue()>, <java.lang.Long: long longValue()>, <java.lang.Long: short
> shortValue()>, <java.lang.Long: void <clinit>()>, <java.lang.Long: void
> <init>(long)>, <java.lang.Long: int getChars(long,char[])>, <java.lang.Long:
> int compareTo(java.lang.Long)>, <java.lang.Long: int
> compareTo(java.lang.Object)>, <java.lang.Long: boolean
> equals(java.lang.Object)>, <java.lang.Long: java.lang.String toString()>,
> <java.lang.Long: java.lang.String toBinaryString(long)>, <java.lang.Long:
> java.lang.String toHexString(long)>, <java.lang.Long: java.lang.String
> toOctalString(long)>, <java.lang.Long: java.lang.String toString(long)>,
> <java.lang.Long: java.lang.String toString(long,int)>, <java.lang.Long:
> java.lang.String toUnsignedString(long,int)>, <java.lang.Long: long
> parseLong(java.lang.String)>, <java.lang.Long: void
> <init>(java.lang.String)>, <java.lang.Long: long
> parseLong(java.lang.String,int)>, <java.lang.Long: void
> appendTo(long,java.lang.StringBuffer)>, <java.lang.Long: java.lang.Long
> decode(java.lang.String)>, <java.lang.Long: java.lang.Long
> getLong(java.lang.String)>, <java.lang.Long: java.lang.Long
> valueOf(java.lang.String)>, <java.lang.Long: java.lang.Long
> valueOf(java.lang.String,int)>, <java.lang.Long: java.lang.Long
> getLong(java.lang.String,long)>, <java.lang.Long: java.lang.Long
> getLong(java.lang.String,java.lang.Long)>]
> Looking in java.lang.Number which has methods [<java.lang.Number: byte
> byteValue()>, <java.lang.Number: double doubleValue()>, <java.lang.Number:
> float floatValue()>, <java.lang.Number: int intValue()>, <java.lang.Number:
> long longValue()>, <java.lang.Number: short shortValue()>,
> <java.lang.Number: void <init>()>]
> Looking in java.lang.Object which has methods [<java.lang.Object: int
> hashCode()>, <java.lang.Object: void <clinit>()>, <java.lang.Object: void
> <init>()>, <java.lang.Object: void finalize()>, <java.lang.Object: void
> notify()>, <java.lang.Object: void notifyAll()>, <java.lang.Object: void
> registerNatives()>, <java.lang.Object: void wait()>, <java.lang.Object: void
> wait(long)>, <java.lang.Object: void wait(long,int)>, <java.lang.Object:
> java.lang.Class getClass()>, <java.lang.Object: java.lang.Object clone()>,
> <java.lang.Object: boolean equals(java.lang.Object)>, <java.lang.Object:
> java.lang.String toString()>]
> Looking in java.lang.Comparable which has methods [<java.lang.Comparable:
> int compareTo(java.lang.Object)>]
> Looking in java.io.Serializable which has methods []
> at
> soot.AbstractSootMethodRef.resolve(AbstractSootMethodRef.java:135)
> at
> soot.AbstractSootMethodRef.resolve(AbstractSootMethodRef.java:95)
> at
> soot.jimple.internal.AbstractInvokeExpr.getMethod(AbstractInvokeExpr.java:55)
> at
> soot.jimple.toolkits.callgraph.OnFlyCallGraphBuilder.getImplicitTargets(OnFlyCallGraphBuilder.java:235)
> at
> soot.jimple.toolkits.callgraph.OnFlyCallGraphBuilder.processNewMethod(OnFlyCallGraphBuilder.java:183)
> at
> soot.jimple.toolkits.callgraph.OnFlyCallGraphBuilder.processReachables(OnFlyCallGraphBuilder.java:81)
> at
> soot.jimple.spark.solver.OnFlyCallGraph.build(OnFlyCallGraph.java:69)
> at
> soot.jimple.spark.solver.PropWorklist.handleVarNode(PropWorklist.java:127)
> at
> soot.jimple.spark.solver.PropWorklist.propagate(PropWorklist.java:55)
> at
> soot.jimple.spark.SparkTransformer.internalTransform(SparkTransformer.java:121)
> at soot.SceneTransformer.transform(SceneTransformer.java:39)
> at soot.Transform.apply(Transform.java:89)
> at
> soot.RadioScenePack.internalApply(RadioScenePack.java:60)
> at
> soot.jimple.toolkits.callgraph.CallGraphPack.internalApply(CallGraphPack.java:40)
> at soot.Pack.apply(Pack.java:110)
> at
> soot.PackManager.runWholeProgramPacks(PackManager.java:405)
> at soot.PackManager.runPacks(PackManager.java:326)
> at soot.Main.run(Main.java:203)
> at soot.Main.main(Main.java:146)
> at relevancyanalysis.Main.main(Main.java:52)
>
> _______________________________________________
> Soot-list mailing list
> Soot-list at sable.mcgill.ca
> http://mailman.cs.mcgill.ca/mailman/listinfo/soot-list
>
>
--
Eric Bodden
Sable Research Group
McGill University, Montréal, Canada
More information about the Soot-list
mailing list