有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java解压JAR以获取类。文本

我想解压一个我正在使用的jar库,检查它的核心功能是否更新到GitHub上显示的内容

如何解压缩一个文件。jar文件

更新:

你将无法上课。如果直接解压,则不附带源代码

感谢alegen使用Java反编译器的方法,您可以反编译类


共 (3) 个答案

  1. # 1 楼答案

    所以你要做的是检查两个jar是否相同,以确定github上的方法与jar中的方法相同

    我认为你在试图解决错误的问题。您应该做的是从github中检出代码,然后自己构建它。在项目的根目录中应该有一个名为README、INSTALL或类似文件

    现在,当然,你可能不想要项目的最新版本,你可能想要最新的稳定版本或诸如此类的东西,这是完全可行的:只需从git下载你想要的版本,然后自己构建。现在,您既有代码,又有一个jar

    如果您这样做,就可以确保代码与jar匹配,并且不需要任何令人讨厌的反编译,只需要快速生成或稍后使用ant,正如自述文件所指定的那样

  2. # 2 楼答案

    您可以使用各种工具从JAR文件中提取文件,包括纯ZIP文件工具。。。当然还有作为JDK一部分的jar命令

    听起来你真正的问题是你想反编译文件。在JAR文件中对文件进行分类,以便可以将它们与一些Java源代码进行比较

    坏消息是它不起作用了。。。尤其是在大规模的。是的,有些反编译器(在好的一天)会产生类似Java的东西。然而:

    • 反编译后的Java看起来与用于生成。类文件。将反编译文件与原始源代码(或基于原始源代码的东西)进行比较将是一个冗长而困难的手动过程

    • 反编译的代码很有可能不是有效的(可编译的)Java

    更好的方法可能是在GitHub上编译源代码,并尝试比较两个版本的。类文件。然而,即使这样也不是直接的,因为:

    • 那个。类文件包含时间戳和其他依赖于构建路径、编译开关等的内容。在比较数据时,你必须弄清楚如何消除这种“噪音”。类文件

    • 不同版本的Java编译器产生不同风格的类文件

    • 即使类文件版本号相同,生成的字节码中也可能存在特定于编译器版本的差异


    对于小规模比较,反编译可能会。。。只要你准备好解决这个问题。还可以使用javap打印类文件中的字节码,并比较javap输出

  3. # 3 楼答案

    用WinRAR打开JAR文件,但除非人们也打包了source code,否则你只能找到包含bytecode.class文件。你还必须使用decompiler;我通常使用JD Java Decompiler