[Soot-list] 答复: soot.CompilationDeathException: there were errors during parsing and/or type checking (JastAdd frontend)
周 筱川
cobra at live.com
Fri Aug 24 01:59:13 EDT 2018
Hi Bernhard ,
It works as you said, thank u so much!
Directory structure
D:\flowproject\soot\test
│ rt.jar
│ soot-trunk.jar
│
├─bin
│ └─TriangleClass
│ Triangle.class
Command
D:\flowproject\soot\test> java -cp soot-trunk.jar soot.Main -cp bin;rt.jar TriangleClass.Triangle
________________________________
发件人: Bernhard Berger <berber at tzi.de>
发送时间: 2018年8月22日 19:47
收件人: 周 筱川
抄送: soot-list at CS.McGill.CA
主题: Re: [Soot-list] soot.CompilationDeathException: there were errors during parsing and/or type checking (JastAdd frontend)
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<mailto: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<mailto:berber at tzi.de>>
发送时间: 2018年8月20日 6:19
收件人: 周 筱川
抄送: soot-list at CS.McGill.CA<mailto: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/20180824/50bad58d/attachment-0001.html>
More information about the Soot-list
mailing list