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

Eric Bodden eric.bodden at ec-spride.de
Fri Aug 3 09:39:26 EDT 2012


Hi again.

The best thing would be to download the correct JDK and put that on
the classpath. It may help to look at the major/minor version numbers
in the class files of the program you analyze to figure out which
version that should be.

Eric

On 3 August 2012 14:19, Xinwei Xie <xinweix at cse.unsw.edu.au> wrote:
> Hi Eric,
> Thanks for your reply.
> I just use the default JDK in the system (actually it is OSX Lion). What
> else can I specify to avoid the problem rather than using the latest one
> from Git repository. Thanks.
>
> On Fri, Aug 3, 2012 at 10:10 PM, Eric Bodden <eric.bodden at ec-spride.de>
> wrote:
>>
>> 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
>
>
>
>
> --
> 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
>



-- 
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