[Soot-list] Help (fwd)

Ondrej Lhotak olhotak at sable.mcgill.ca
Tue May 24 09:47:37 EDT 2005


On Tue, May 24, 2005 at 12:39:53AM +0530, Rahul Nagpal wrote:
> Hi,
> 	I hope you have received my last mail (in case not the details are
> given below) where I have given the exception raised by soot if I use
> j2me class directly with soot.

Our whole lab was down for the past several days for hardware upgrades.
Everything seems to be back now, and hopefully people are receiving your
message.

> 	I will be thankful if you can help (or redirect) me in this
> regard. I am  ready to make whatever modification are required to get the
> soot working with j2me ( I will myself takeup the ptolmy inteface part later once I get
> the soot working with j2me classes). But because of my inexperience with
> soot I am not able to find the cause of these problems.

J2ME has somewhat different semantics than J2SE, and Soot is built with
J2SE in mind. So, getting it to work with J2ME may require some
tinkering. Unfortunately, I don't know of anyone with experience getting
Soot to work with J2ME that I could direct you to.

I've walked through your stack trace for you, and noticed the following
line:
at soot.jimple.toolkits.typing.ClassHierarchy.<init>(ClassHierarchy.java:82)

The code at this point is:
    79      // hack for J2ME library which does not have Cloneable and Serializable
    80      // reported by Stephen Chen
    81      if (!G.v().isJ2ME) {
    82        CLONEABLE = typeNode(RefType.v("java.lang.Cloneable"));
    83        SERIALIZABLE = typeNode(RefType.v("java.io.Serializable"));
    84      } else {
    85        CLONEABLE = null;
    86        SERIALIZABLE = null;
    87      }

If you have isJ2ME set to true, line 82 (and 83) should never be getting
executed.

Ondrej

> 
> Thanks and Regards
> Rahul
> 
> On Thu, 19 May 2005, Rahul Nagpal wrote:
> 
> -->Hi,
> -->	I think you are right. I should have first checked on the
> -->application  directly. Now I have done that I got this error[1]
> -->if I use J2ME classes  ( I am doing "java soot.Main -cp <the j2me class path>)
> -->irrespective of whether I use -w option or not.
> -->
> -->	Notably the ptolemy is working fine with soot when I use the
> -->J2SE classes and only the use of J2ME classes causes the problem.
> -->
> -->Thanks and Regards
> -->Rahul
> -->
> -->[1]
> -->Exception in thread "main" java.lang.RuntimeException: This operation
> -->requires resolving level HIERARCHY but java.lang.Cloneable is at resolving
> -->level DANGLING
> -->        at soot.SootClass.checkLevel(SootClass.java:123)
> -->        at soot.SootClass.hasSuperclass(SootClass.java:702)
> -->        at soot.jimple.toolkits.typing.TypeNode.<init>(TypeNode.java:86)
> -->        at soot.jimple.toolkits.typing.ClassHierarchy$ConstructorChooser.caseRefType(ClassHierarchy.java:238)
> -->        at soot.RefType.apply(RefType.java:137)
> -->        at soot.jimple.toolkits.typing.ClassHierarchy$ConstructorChooser.typeNode(ClassHierarchy.java:231)
> -->        at soot.jimple.toolkits.typing.ClassHierarchy.typeNode(ClassHierarchy.java:127)
> -->        at soot.jimple.toolkits.typing.ClassHierarchy.classHierarchy(ClassHierarchy.java:105)
> -->        at soot.jimple.toolkits.typing.TypeResolver.<init>(TypeResolver.java:153)
> -->        at soot.jimple.toolkits.typing.TypeResolver.resolve(TypeResolver.java:178)
> -->        at soot.jimple.toolkits.typing.TypeAssigner.internalTransform(TypeAssigner.java:57)
> -->        at soot.BodyTransformer.transform(BodyTransformer.java:51)
> -->        at soot.Transform.apply(Transform.java:104)
> -->        at soot.JimpleBodyPack.applyPhaseOptions(JimpleBodyPack.java:70)
> -->        at soot.JimpleBodyPack.internalApply(JimpleBodyPack.java:93)
> -->        at soot.Pack.apply(Pack.java:120)
> -->        at soot.coffi.CoffiMethodSource.getBody(CoffiMethodSource.java:115)
> -->        at soot.SootMethod.getBodyFromMethodSource(SootMethod.java:80)
> -->        at soot.SootMethod.retrieveActiveBody(SootMethod.java:304)
> -->        at soot.PackManager.retrieveAllBodies(PackManager.java:711)
> -->        at soot.PackManager.runPacks(PackManager.java:302)
> -->        at soot.Main.run(Main.java:179)
> -->        at soot.Main.main(Main.java:153)
> -->
> -->
> -->On Wed, 18 May 2005, Ondrej Lhotak wrote:
> -->
> -->-->On Tue, May 17, 2005 at 01:56:33AM +0530, Rahul Nagpal wrote:
> -->-->> [1]
> -->-->> Exception in thread "main"
> -->-->> soot.AbstractSootMethodRef$ClassResolutionFailedException: Class
> -->-->> com.sun.cldc.io.ConsoleOutputStream doesn't have method <init>([]) : void;
> -->-->> failed to resolve in superclasses and interfacesLooking in
> -->-->> com.sun.cldc.io.ConsoleOutputStream which has methods []
> -->-->> 	at soot.AbstractSootMethodRef.resolve(AbstractSootMethodRef.java:136)
> -->-->
> -->-->....
> -->-->
> -->-->>         at ptolemy.copernicus.c.CallGraphPruner.<init>(CallGraphPruner.java:109)
> -->-->>         at ptolemy.copernicus.c.RequiredFileGenerator._pruneLevel1(RequiredFileGenerator.java:243)
> -->-->>         at ptolemy.copernicus.c.RequiredFileGenerator.init(RequiredFileGenerator.java:152)
> -->-->>         at ptolemy.copernicus.c.JavaToC.convert(JavaToC.java:89)
> -->-->>         at ptolemy.copernicus.c.JavaToC.main(JavaToC.java:186)
> -->-->
> -->-->Soot doesn't seem to have any methods in the class
> -->-->com.sun.cldc.io.ConsoleOutputStream, which suggests that the class was
> -->-->not resolved properly. It could be due to some interaction between
> -->-->Ptolemy and the Soot resolver. Does the same thing happen when you run
> -->-->Soot on your application, with the -w switch (to make it build a call
> -->-->graph)?
> -->-->
> -->-->> [2]Exception in thread "main" java.lang.NullPointerException
> -->-->>         at soot.AnySubType.v(AnySubType.java:44)
> -->-->>         at soot.toolkits.exceptions.ThrowableSet$Manager.<init>(ThrowableSet.java:239)
> -->-->>         at soot.Singletons.soot_toolkits_exceptions_ThrowableSet_Manager(Singletons.java:1005)
> -->-->>         at soot.toolkits.exceptions.ThrowableSet$Manager.v(ThrowableSet.java:274)
> -->-->
> -->-->...
> -->-->
> -->-->>         at ptolemy.copernicus.c.MethodCodeGenerator.generate(MethodCodeGenerator.java:76)
> -->-->>         at ptolemy.copernicus.c.CodeFileGenerator.generate(CodeFileGenerator.java:146)
> -->-->>         at ptolemy.copernicus.c.RequiredFileGenerator._generateC(RequiredFileGenerator.java:282)
> -->-->>         at ptolemy.copernicus.c.RequiredFileGenerator.generateTransitiveClosureOf(RequiredFileGenerator.java:94)
> -->-->>         at ptolemy.copernicus.c.JavaToC.convert(JavaToC.java:119)
> -->-->>         at ptolemy.copernicus.c.JavaToC.main(JavaToC.java:186)
> -->-->
> -->-->This suggests that the java.lang.ClassFormatError class is not getting
> -->-->loaded, even though the Scene sets it to be a basic class. Maybe Ptolemy
> -->-->is not running Scene.v().loadBasicClasses(). Again, does this problem
> -->-->happen when you run Soot on your application?
> -->-->
> -->-->Ondrej
> -->-->
> -->-->
> -->
> -->---------------------------------------------------------------------
> -->  __    __
> -->   / /\  / /\		RAHUL NAGPAL
> -->  / /_/_/ / /		Room No. U-77, IISc Hostels,
> --> /_______/ / /\
> --> \  ____ \ \/  \      	Phone Nos 080-2293-2634/2591 (Hostel)
> -->  \ \/__\ \  /\ \    	080-22932368/468-104 (Compiler Lab)
> -->   \_______\/ / / 	080-22932368-115 (CL1)
> -->    /_/ /  /_/ /    	080-22932368-102 (CL2)
> -->    \_\/   \_\/    	080-22932368-227 (Intel LAB)
> -->--------------------------------------------------------------------
> -->
> 
> ---------------------------------------------------------------------
>   __    __
>    / /\  / /\		RAHUL NAGPAL
>   / /_/_/ / /		Room No. U-77, IISc Hostels,
>  /_______/ / /\
>  \  ____ \ \/  \      	Phone Nos 080-2293-2634/2591 (Hostel)
>   \ \/__\ \  /\ \    	080-22932368/468-104 (Compiler Lab)
>    \_______\/ / / 	080-22932368-115 (CL1)
>     /_/ /  /_/ /    	080-22932368-102 (CL2)
>     \_\/   \_\/    	080-22932368-227 (Intel LAB)
> --------------------------------------------------------------------
> 


More information about the Soot-list mailing list