[Soot-list] soot.CompilationDeathException: there were errors during parsing and/or type checking (JastAdd frontend)

Bernhard Berger berber at tzi.de
Wed Aug 22 15:47:04 EDT 2018


Hi,

it looks like you do not set your class path correctly. The class path (that is passed to Soot) tase to be configured the same way the java class path would be configured.

Let’s assume you compile your Triangle class to ./bin/TargetClass/Triangle.class. The correct command line would be java -cp soot.jar soot.Main -cp bin;rt.jar TargetClass.Triangle. You have to use the same class path you would use if there would be a main method in Triangle and you want to run that method. 

Regards, Bernhard

> On 22 Aug 2018, at 15:57, 周 筱川 <cobra at live.com> wrote:
> 
> Hi there ,
>      I figured out the previous problem . as Bernhard said ,I should compile the .java files to .class files first while working with JDK8 . It is also indicated in a official tutorial( https://github.com/Sable/soot/wiki/Introduction:-Soot-as-a-command-line-tool ) <https://github.com/Sable/soot/wiki/Introduction:-Soot-as-a-command-line-tool>
> 
> Now, if you're working with JDK8, these Java files need to be compiled before they can be passed on as command-line parameters
> 
> but there's another problem  when handling a class with package
> 
> Java code
> package TriangleClass;
> 
> public class Triangle {
>     public String triangle(int a, int b, int c){
> 
>         if(a > 0 && b > 0 && c >0){
>             if(a + b >c)
>             {
>                 if(a == b || b ==c || a ==c)
>                 {
>                     if(a == b && b == c)
>                     {
>                         return "equilateral";
>                     }
>                     return "isosceles";
>                 }
>                 else{
>                     return "scalene";
>                 }
>             }
>             else{
>                 return "Not Triangle";
>             }
>         }
>         else{
>             return "Not Triangle";
>         }
>     }
> 
>     public int a;
>     public int b;
>     public int c;
> }
> I compile it into a .class file ,then tried two different commands  as follows:
> 
> D:\flowproject\soot\test>java -cp soot-trunk.jar soot.Main -cp .;rt.jar Triangle
> Soot started on Wed Aug 22 21:37:47 CST 2018
> java.lang.RuntimeException: Class names not equal! TriangleClass.Triangle != Triangle
>         at soot.asm.SootClassBuilder.visit(SootClassBuilder.java:99)
>         at org.objectweb.asm.ClassReader.accept(ClassReader.java:637)
>         at org.objectweb.asm.ClassReader.accept(ClassReader.java:521)
>         at soot.asm.AsmClassSource.resolve(AsmClassSource.java:62)
>         at soot.SootResolver.bringToHierarchyUnchecked(SootResolver.java:240)
>         at soot.SootResolver.bringToHierarchy(SootResolver.java:212)
>         at soot.SootResolver.bringToSignatures(SootResolver.java:273)
>         at soot.SootResolver.processResolveWorklist(SootResolver.java:174)
>         at soot.SootResolver.resolveClass(SootResolver.java:137)
>         at soot.Scene.loadClass(Scene.java:861)
>         at soot.Scene.loadClassAndSupport(Scene.java:847)
>         at soot.Scene.loadNecessaryClass(Scene.java:1577)
>         at soot.Scene.loadNecessaryClasses(Scene.java:1590)
>         at soot.Main.run(Main.java:248)
>         at soot.Main.main(Main.java:144)
> 
> 
> D:\flowproject\soot\test>java -cp soot-trunk.jar soot.Main -d ./xxx -cp .;rt.jar TriangleClass.Triangle
> Soot started on Wed Aug 22 21:38:04 CST 2018
> soot.SootResolver$SootClassNotFoundException: couldn't find class: TriangleClass.Triangle (is your soot-class-path set properly?)
>         at soot.SootResolver.bringToHierarchyUnchecked(SootResolver.java:232)
>         at soot.SootResolver.bringToHierarchy(SootResolver.java:212)
>         at soot.SootResolver.bringToSignatures(SootResolver.java:273)
>         at soot.SootResolver.processResolveWorklist(SootResolver.java:174)
>         at soot.SootResolver.resolveClass(SootResolver.java:137)
>         at soot.Scene.loadClass(Scene.java:861)
>         at soot.Scene.loadClassAndSupport(Scene.java:847)
>         at soot.Scene.loadNecessaryClass(Scene.java:1577)
>         at soot.Scene.loadNecessaryClasses(Scene.java:1590)
>         at soot.Main.run(Main.java:248)
>         at soot.Main.main(Main.java:144)
> 
> 
> when I handle a simple class without package , it can be done successfully.
> 
> Example 
> 
>     public class GetGreeting  
>     {  
>         public static void main(String [] args)  
>         {  
>             System.out.println("Hello world");  
>           
>         }  
>     }  
> 
> I've searched  anything about the error messages  a long time online , still without a clue .
> please help ,  thank you!
> 
> 
> 
> 发件人: 周 筱川 <cobra at live.com <mailto:cobra at live.com>>
> 发送时间: 2018年8月20日 6:25
> 收件人: Bernhard Berger
> 抄送: soot-list at CS.McGill.CA <mailto:soot-list at CS.McGill.CA>
> 主题: 答复: [Soot-list] soot.CompilationDeathException: there were errors during parsing and/or type checking (JastAdd frontend)
>  
> Thank you Bernhard , i'll try again and give a feedback later.
> 发件人: Bernhard Berger <berber at tzi.de>
> 发送时间: 2018年8月20日 6:19
> 收件人: 周 筱川
> 抄送: soot-list at CS.McGill.CA
> 主题: Re: [Soot-list] soot.CompilationDeathException: there were errors during parsing and/or type checking (JastAdd frontend)
>  
> Hi,
> 
> please try to compile your source code using javac and analyze the bytecode instead of the source. As far as I know, the bytecode front end is better supported than the source front end.
> 
> Regards, Bernhard
> 
>> On 20 Aug 2018, at 05:38, 周 筱川 <cobra at live.com <mailto:cobra at live.com>> wrote:
>> 
>> Hi there,
>>     I'm a beginner for Soot, while trying to parse some java files , there's an error "soot.CompilationDeathException: there were errors during parsing and/or type checking (JastAdd frontend)". 
>>    Thank you very much for any advice!
>> 
>> Detail as follows:
>> 
>> Tried commands:
>> java -cp D:\flowproject\soot\sootclasses-trunk-jar-with-dependencies.jar -debug  soot.Main  -cp . CardQueryService
>> java -cp D:\flowproject\soot\sootclasses-trunk-jar-with-dependencies.jar soot.Main --soot-classpath .;"%JAVA_HOME%"\jre\lib\rt.jar  CardQueryService
>> 
>> Error Message 
>> Soot started on Mon Aug 20 11:20:20 CST 2018
>> soot.CompilationDeathException: there were errors during parsing and/or type checking (JastAdd frontend)
>>         at soot.JastAddInitialResolver.formAst(JastAddInitialResolver.java:66)
>>         at soot.JavaClassSource.resolve(JavaClassSource.java:57)
>>         at soot.SootResolver.bringToHierarchyUnchecked(SootResolver.java:240)
>>         at soot.SootResolver.bringToHierarchy(SootResolver.java:212)
>>         at soot.SootResolver.bringToSignatures(SootResolver.java:273)
>>         at soot.SootResolver.processResolveWorklist(SootResolver.java:174)
>>         at soot.SootResolver.resolveClass(SootResolver.java:137)
>>         at soot.Scene.loadClass(Scene.java:861)
>>         at soot.Scene.loadClassAndSupport(Scene.java:847)
>>         at soot.Scene.loadNecessaryClass(Scene.java:1577)
>>         at soot.Scene.loadNecessaryClasses(Scene.java:1590)
>>         at soot.Main.run(Main.java:248)
>>         at soot.Main.main(Main.java:144)
>> 
>> Java File Example:
>>    plz see the attachment
>> 
>> 
>> 
>> 
>> 
>> <CardQueryService.java>_______________________________________________
>> Soot-list mailing list
>> Soot-list at CS.McGill.CA <mailto:Soot-list at CS.McGill.CA>
>> https://mailman.CS.McGill.CA/mailman/listinfo/soot-list <https://mailman.cs.mcgill.ca/mailman/listinfo/soot-list>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mailman.CS.McGill.CA/pipermail/soot-list/attachments/20180822/a699dbb1/attachment-0001.html>


More information about the Soot-list mailing list