[Soot-list] soot.AbstractSootFieldRef$FieldResolutionFailedException

Asif Iqbal iqbala24 at mcmaster.ca
Mon Oct 18 14:39:56 EDT 2010


Hi Eric,

I think I have found the cause but not the solution. Since your  
JAnalyzer uses sootclasses 1.2.5_modified, there are 2 soot.Main()  
classes in my classpath, the other one being from sootclasses 2.4.0.  
So during the analysis of TypeResolver class, it looks for some extra  
fields in soot.Main(). But those extra fileds are not in 2.4.0  
version. I guess they were in the 1.2.5 modified version. So I think I  
need some way to separate Java's classpath and Soot's classpath in my  
application program, just like we do in command line. That way my  
application will use the 2.4.0 version but the analysis of  
TypeResolver will look for ssot.Main() in the 1.2.5 modified version.  
But I don't know how to do it. Can you suggest any way to separate  
Java's and Soot's classpath from my application ?

Asif

On 18-Oct-10, at 12:21 PM, Asif Iqbal wrote:

> Hi Eric,
>
> I have tried what you suggested but that doesn't work. It throws the  
> same exception. By the way I should let you know that my code (that  
> I sent in the previous email) worked for most other classes but it  
> is generating the exception only for a few classes. In fact I was  
> running soot on your JAnalyzer class files. Of all the class files,  
> only analysis.TypeResolver and system.Main threw this exception. For  
> all other class files, the xml was generated successfully. I still  
> don't know what's going wrong with these class files.
>
> Asif
>
> On 18-Oct-10, at 6:50 AM, Eric Bodden wrote:
>
>> Hi Asif.
>>
>> I think the problem may be that your call to main(..) overrides your
>> settings for the sootclasspath. Could you try just adding the -cp
>> <classpath> argument to the args1 array as you do for the other
>> arguments?
>>
>> Eric
>>
>>
>> --
>> Dr. Eric Bodden
>> Software Technology Group, Technische Universität Darmstadt, Germany
>> Tel: +49 6151 16-5478    Fax: +49 6151 16-5410
>> Mailing Address: S2|02 A209, Hochschulstraße 10, 64289 Darmstadt
>>
>>
>>
>> On 15 October 2010 19:11, Asif Iqbal <iqbala24 at mcmaster.ca> wrote:
>>> Hi all,
>>> I am trying to generate an XML file for a class using both command  
>>> line and
>>> by calling Soot's Main.main() from inside my own Java application.  
>>> The
>>> command line works fine but calling main() from my application  
>>> raises the
>>> following exception:
>>> Exception in thread "main"
>>> soot.AbstractSootFieldRef$FieldResolutionFailedException: Class  
>>> soot.Main
>>> doesn't have field keepLineNumberAttribute : boolean; failed to  
>>> resolve in
>>> superclasses and interfacesLooking in soot.Main which has fields
>>> [<soot.Main: java.lang.String versionString>, <soot.Main:  
>>> java.util.Date
>>> start>, <soot.Main: java.util.Date finish>, <soot.Main:  
>>> java.lang.String[]
>>> cmdLineArgs>]
>>> Looking in java.lang.Object which has fields []
>>> I have no idea what this means. I have added the same paths to
>>> Scene.v().setSootClasspath() as I have done in the command line.  
>>> But what's
>>> going wrong here ?
>>> Below is my command line which works fine:
>>> java -Xmx800m -cp
>>> sootclasses 
>>> -2.4.0.jar:jasminclasses-2.4.0.jar:polyglotclasses-1.3.5.jar
>>> soot.Main -cp
>>> .:/Users/asifiqbal/Downloads/soylatte/jre/lib/rt.jar:/Users/ 
>>> asifiqbal/Downloads/soylatte/jre/lib/jce.jar:swing- 
>>> layout.jar:jh.jar:tools.jar:xerces.jar:log4j.jar:log4j- 
>>> core.jar:sootclasses-1.2.5- 
>>> modified.jar:janalyzer_onlinehelp.jar:swing-layout.jar:./janalyzer
>>> -f X analysis.TypeResolver
>>> And below is the code snippet which raises that exception:
>>> .....
>>> Scene.v().setSootClassPath(Scene.v().getSootClassPath() +
>>>                 "sootclasses-2.4.0.jar:" +
>>>                 "jasminclasses-2.4.0.jar:" +
>>>                 "polygotclasses-1.3.5.jar:" +
>>>                 ":.:" +
>>>                  "/Users/asifiqbal/Downloads/soylatte/jre/lib/ 
>>> rt.jar:" +
>>>  "/Users/asifiqbal/Downloads/soylatte/jre/lib/jce.jar:" +
>>>                  "swing-layout.jar:" +
>>>                  "jh.jar:" +
>>>                  "tools.jar:" +
>>>                  "xerces.jar:" +
>>>                  "log4j.jar:" +
>>>                  "log4j-core.jar:" +
>>>                  "sootclasses-1.2.5-modified.jar:" +
>>>                  "janalyzer_onlinehelp.jar:" +
>>>                  "swing-layout.jar:" +
>>>                  "./janalyzer");
>>>
>>>         String[] args1 = {"-f", "X", "analysis.TypeResolver"};
>>>         Main.main(args1);
>>> .....
>>> Any help would be greatly appreciated.
>>> Asif
>>> _______________________________________________
>>> Soot-list mailing list
>>> Soot-list at sable.mcgill.ca
>>> http://mailman.cs.mcgill.ca/mailman/listinfo/soot-list
>>>
>>>
>
> _______________________________________________
> Soot-list mailing list
> Soot-list at sable.mcgill.ca
> http://mailman.cs.mcgill.ca/mailman/listinfo/soot-list

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mailman.cs.mcgill.ca/pipermail/soot-list/attachments/20101018/6a64f20a/attachment-0001.html 


More information about the Soot-list mailing list