这是我在Windows 10命令Shell上使用的命令:
java
-cp .soot-2.5.0.jar soot.Main
-cp ".;R:...OCLRulerlib;C:...jdk1.8.0_144bin"
-pp -process-dir R:...OCLRulersrc
-src-prec java
-d R:...testsoot
-allow-phantom-refs
-main-class OCLRuler
执行它时,我将获得以下输出:
Soot started on Tue Sep 26 13:28:32 EDT 2017
Warning: java.dyn.InvokeDynamic is a phantom class!
Warning: Main is a phantom class!
Warning: MainMulti is a phantom class!
Warning: oclruler.a_test.MainRawTesting is a phantom class!
... all of them (100+ lines)...
Warning: oclruler.utils.ToolBox is a phantom class!
OCLRuler.java: Class "oclruler.genetics.EvaluatorOCL" not found.
OCLRuler.java: Class "oclruler.genetics.EvaluatorOCL" not found.
Exception in thread "main" soot.CompilationDeathException: Could not compile
at soot.javaToJimple.JavaToJimple.compile(JavaToJimple.java:104)
at soot.javaToJimple.InitialResolver.formAst(InitialResolver.java:117)
at soot.JavaClassSource.resolve(JavaClassSource.java:54)
at soot.SootResolver.bringToHierarchy(SootResolver.java:215)
at soot.SootResolver.bringToSignatures(SootResolver.java:239)
at soot.SootResolver.processResolveWorklist(SootResolver.java:154)
at soot.SootResolver.resolveClass(SootResolver.java:124)
at soot.Scene.loadClass(Scene.java:448)
at soot.Scene.loadClassAndSupport(Scene.java:433)
at soot.Scene.loadNecessaryClasses(Scene.java:1076)
at soot.Main.run(Main.java:167)
at soot.Main.main(Main.java:141)
OCLRUler/lib
中包含了Oclruler项目中使用的所有LIB,并且OCLRuler/src
中的所有来源都包含。烟灰目录中未包含输出目录。另外,该项目确实编译(我正在努力)。.
目录包含所有烟灰/茉莉/英雄罐。
仍然,所有类都被视为幻影,并且烟灰汇编中插入了题词,因为(我想)它缺少这些班级的身体。我的意思是" evaluatorocl"(即,仍然猜测,汇编的来源)是"幻影类"。
怎么了?
我应该在Soot的Class Path中添加全部和每个软件包吗?
我尝试了各种命令行的表达式 - 直到我迷失了。有人对此事有线索吗?
非常感谢。Edouard
更改了 -pp -process-dir R:...OCLRuler
-pp -process-dir R:...OCLRulersrc
参数似乎可以正常工作...幻影仍在漫步,但是输出文件夹中有结果文件!
[编辑:]OUPS,这是Gona成为一个新问题... OUPUT文件是...空!!!正如我所说,仍有有关幻象和输出的警告(Java和类都一样)
为什么它们为空?[/edit]
这很可能是烟灰源代码前端的问题,现在已经过时了。我建议将.java文件汇编为.class,然后将其交给烟灰。