用Krakatau反编译的最简单,最普通的方法是反编译jar.
假设您在当前目录中有一个名为Luyten.jar的jar文件,并且想反编译jar中的每个类并将其输出到目录temp.然后你会做类似的事情
pypy -O Krakatau\decompile.py -skip -out temp Luyten.jar
根据是否安装了JDK以及安装位置,可能需要在path参数中显式传递jre的位置.例如
pypy -O Krakatau\decompile.py -skip -out temp -path "C:\Program Files (x86)\Java\jre7\lib\rt.jar" Luyten.jar
如果要反编译jar中的特定类,可以将jar添加到路径中并指定类名.如果需要像前面的示例中一样指定rt.jar的路径,则可以多次传递-path参数,也可以一次传递分号(由分号分隔).例如,仅反编译com.beust.jcommander.FuzzyMap $IKey类,
pypy -O Krakatau\decompile.py -skip -out temp -path Luyten.jar com.beust.jcommander.FuzzyMap$IKey
您还可以反编译jar之外的类文件,但这很烦人,因为您必须确保目录布局正确.您需要指定相对于将在其中找到类的根目录的目录.
例如,假设您有一个类文件,该类文件位于./Foo/Bar/com/beust/jcommander/FuzzyMap$IKey.class
pypy -O Krakatau\decompile.py -skip -out temp -path Foo/Bar com.beust.jcommander.FuzzyMap$IKey
在这种情况下,目录必须与完全合格的类名完全匹配.一个常见的错误是尝试使用错误的根目录进行反编译.关于jars的好处是,具有正确的目录结构是自动的.