首页 > 解决方案 > 如何将 Procyon 反编译器与 Diffoscope 一起使用

问题描述

我在 Ubuntu Bionic 上运行 Diffoscope,当我打开调试日志 ( --debug) 时,我注意到许多这样的行(每个.class文件一个JAR):

diffoscope.comparators.java: Unable to find ProcyonDecompiler. Falling back...

我安装了软件包procyon-decompiler,但错误仍然存​​在。如何使 Diffoscope 与 Procyon 一起使用?我找不到有关此集成的任何文档!

标签: javadiffbinary-reproducibility

解决方案


通过阅读 Python 的源代码diffoscope,我发现它需要一个在路径中diffoscope命名的可执行文件。procyon-decompiler

/usr/lib/python3/dist-packages/diffoscope/comparators/java.py:L40

@tool_required('procyon-decompiler')
def cmdline(self):
    return ['procyon-decompiler', '-ec', self.path]

在 Ubuntu Bionic 中,该procyon-decompiler软件包将 Procyon 安装为procyon而不是procyon-decompiler. 我通过创建符号链接完成了这项工作。例如:

ln -s /usr/bin/procyon ~/.local/bin/procyon-decompiler

推荐阅读