[Soot-list] Class java.util.HashMap doesn't have method hash([int])?

Eric Bodden eric.bodden at ec-spride.de
Fri Aug 3 08:10:30 EDT 2012


Hello.

Yes it seems that you are analyzing your program with the wrong JDK on
Soot's classpath. If you don't really care about the method then you
can download the current version of Soot from Git and use the option
-ire. This should ignore such resolution errors.

Eric

On 3 August 2012 10:30, Xinwei Xie <xinweix at cse.unsw.edu.au> wrote:
> What happened to this. I ran it on my Macbook Pro with java version 1.6.0_33
> and soot 2.5.0
>
> java -Xmx4G -jar lib/soot-2.5.0.jar  -w -app -cp
> .:/Users/xinweix/Documents/workspace/hedc/bin/:/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Classes/classes.jar:/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Classes/jce.jar
> -p cg.spark  enabled:true Tester
>
> I got the following error: (is it because the incorrect version of java I am
> using?)
>
> [Spark] Type masks in 3.2 seconds.
> [Spark] Pointer Graph simplified in 0.0 seconds.
> Exception in thread "main"
> soot.SootMethodRefImpl$ClassResolutionFailedException: Class
> java.util.HashMap doesn't have method hash([int]) : int; failed to resolve
> in superclasses and interfacesLooking in java.util.HashMap which has methods
> [<java.util.HashMap: void <init>()>, <java.util.HashMap: void
> <init>(java.util.Map)>, <java.util.HashMap: void <init>(int)>,
> <java.util.HashMap: void <init>(int,float)>, <java.util.HashMap: int
> size()>, <java.util.HashMap: boolean isEmpty()>, <java.util.HashMap: boolean
> containsValue(java.lang.Object)>, <java.util.HashMap: boolean
> containsKey(java.lang.Object)>, <java.util.HashMap: java.lang.Object
> get(java.lang.Object)>, <java.util.HashMap: java.lang.Object
> put(java.lang.Object,java.lang.Object)>, <java.util.HashMap:
> java.lang.Object remove(java.lang.Object)>, <java.util.HashMap: void
> putAll(java.util.Map)>, <java.util.HashMap: void clear()>,
> <java.util.HashMap: java.lang.Object clone()>, <java.util.HashMap:
> java.util.Set keySet()>, <java.util.HashMap: java.util.Collection values()>,
> <java.util.HashMap: java.util.Set entrySet()>, <java.util.HashMap: int
> hash(java.lang.Object)>, <java.util.HashMap: java.util.HashMap$Entry
> getEntry(java.util.Map$Entry)>, <java.util.HashMap: void rehash()>,
> <java.util.HashMap: java.util.HashMap$Entry
> access$0(java.util.HashMap,java.util.Map$Entry)>]
> Looking in java.util.AbstractMap which has methods [<java.util.AbstractMap:
> void <init>()>, <java.util.AbstractMap: void clear()>,
> <java.util.AbstractMap: boolean containsKey(java.lang.Object)>,
> <java.util.AbstractMap: boolean containsValue(java.lang.Object)>,
> <java.util.AbstractMap: java.util.Set entrySet()>, <java.util.AbstractMap:
> boolean equals(java.lang.Object)>, <java.util.AbstractMap: java.lang.Object
> get(java.lang.Object)>, <java.util.AbstractMap: int hashCode()>,
> <java.util.AbstractMap: boolean isEmpty()>, <java.util.AbstractMap:
> java.util.Set keySet()>, <java.util.AbstractMap: java.lang.Object
> put(java.lang.Object,java.lang.Object)>, <java.util.AbstractMap: void
> putAll(java.util.Map)>, <java.util.AbstractMap: java.lang.Object
> remove(java.lang.Object)>, <java.util.AbstractMap: int size()>,
> <java.util.AbstractMap: java.lang.String toString()>,
> <java.util.AbstractMap: java.util.Collection values()>]
> Looking in java.lang.Object which has methods [<java.lang.Object: void
> <init>()>, <java.lang.Object: void registerNatives()>, <java.lang.Object:
> java.lang.Class getClass()>, <java.lang.Object: int hashCode()>,
> <java.lang.Object: boolean equals(java.lang.Object)>, <java.lang.Object:
> java.lang.Object clone()>, <java.lang.Object: java.lang.String toString()>,
> <java.lang.Object: void notify()>, <java.lang.Object: void notifyAll()>,
> <java.lang.Object: void wait(long)>, <java.lang.Object: void
> wait(long,int)>, <java.lang.Object: void wait()>, <java.lang.Object: void
> finalize()>, <java.lang.Object: void <clinit>()>]
> Looking in java.util.Map which has methods [<java.util.Map: void clear()>,
> <java.util.Map: boolean containsKey(java.lang.Object)>, <java.util.Map:
> boolean containsValue(java.lang.Object)>, <java.util.Map: java.util.Set
> entrySet()>, <java.util.Map: boolean equals(java.lang.Object)>,
> <java.util.Map: java.lang.Object get(java.lang.Object)>, <java.util.Map:
> java.lang.Object put(java.lang.Object,java.lang.Object)>, <java.util.Map:
> int hashCode()>, <java.util.Map: boolean isEmpty()>, <java.util.Map:
> java.util.Set keySet()>, <java.util.Map: void putAll(java.util.Map)>,
> <java.util.Map: java.lang.Object remove(java.lang.Object)>, <java.util.Map:
> int size()>, <java.util.Map: java.util.Collection values()>]
> Looking in java.lang.Cloneable which has methods []
> Looking in java.io.Serializable which has methods []
> Looking in java.util.Map which has methods [<java.util.Map: void clear()>,
> <java.util.Map: boolean containsKey(java.lang.Object)>, <java.util.Map:
> boolean containsValue(java.lang.Object)>, <java.util.Map: java.util.Set
> entrySet()>, <java.util.Map: boolean equals(java.lang.Object)>,
> <java.util.Map: java.lang.Object get(java.lang.Object)>, <java.util.Map:
> java.lang.Object put(java.lang.Object,java.lang.Object)>, <java.util.Map:
> int hashCode()>, <java.util.Map: boolean isEmpty()>, <java.util.Map:
> java.util.Set keySet()>, <java.util.Map: void putAll(java.util.Map)>,
> <java.util.Map: java.lang.Object remove(java.lang.Object)>, <java.util.Map:
> int size()>, <java.util.Map: java.util.Collection values()>]
>
> at soot.SootMethodRefImpl.resolve(SootMethodRefImpl.java:183)
> at soot.SootMethodRefImpl.resolve(SootMethodRefImpl.java:109)
> at
> soot.jimple.internal.AbstractInvokeExpr.getMethod(AbstractInvokeExpr.java:54)
> at
> soot.jimple.toolkits.callgraph.OnFlyCallGraphBuilder.findReceivers(OnFlyCallGraphBuilder.java:553)
> at
> soot.jimple.toolkits.callgraph.OnFlyCallGraphBuilder.processNewMethod(OnFlyCallGraphBuilder.java:533)
> at
> soot.jimple.toolkits.callgraph.OnFlyCallGraphBuilder.processReachables(OnFlyCallGraphBuilder.java:426)
> at soot.jimple.spark.solver.OnFlyCallGraph.build(OnFlyCallGraph.java:55)
> at
> soot.jimple.spark.solver.PropWorklist.handleVarNode(PropWorklist.java:123)
> at soot.jimple.spark.solver.PropWorklist.propagate(PropWorklist.java:53)
> at
> soot.jimple.spark.SparkTransformer.internalTransform(SparkTransformer.java:152)
> at soot.SceneTransformer.transform(SceneTransformer.java:39)
> at soot.Transform.apply(Transform.java:89)
> at soot.RadioScenePack.internalApply(RadioScenePack.java:57)
> at
> soot.jimple.toolkits.callgraph.CallGraphPack.internalApply(CallGraphPack.java:49)
> at soot.Pack.apply(Pack.java:114)
> at soot.PackManager.runWholeProgramPacks(PackManager.java:417)
> at soot.PackManager.runPacks(PackManager.java:336)
> at soot.Main.run(Main.java:198)
> at soot.Main.main(Main.java:141)
>
>
> --
> Xinwei XIE
> PhD Candidate, School of Computer Science and Engineering
> University of New South Wales, Sydney, Australia, 2052
> Email: xinweix at cse.unsw.edu.au
> Homepage: www.cse.unsw.edu.au/~xinweix
> Mobile: +61 0432 679315
>
>
> _______________________________________________
> Soot-list mailing list
> Soot-list at sable.mcgill.ca
> http://mailman.cs.mcgill.ca/mailman/listinfo/soot-list
>



-- 
Eric Bodden, Ph.D., http://bodden.de/
Head of Secure Software Engineering Group at EC SPRIDE
Tel: +49 6151 16-75422    Fax: +49 6151 16-72051
Room 3.2.14, Mornewegstr. 30, 64293 Darmstadt


More information about the Soot-list mailing list