java解压JAR以获取类。文本
我想解压一个我正在使用的jar库,检查它的核心功能是否更新到GitHub上显示的内容
如何解压缩一个文件。jar文件
更新:
你将无法上课。如果直接解压,则不附带源代码
感谢alegen使用Java反编译器的方法,您可以反编译类
你可以在下面搜索框中键入要查询的问题!
我想解压一个我正在使用的jar库,检查它的核心功能是否更新到GitHub上显示的内容
如何解压缩一个文件。jar文件
更新:
你将无法上课。如果直接解压,则不附带源代码
感谢alegen使用Java反编译器的方法,您可以反编译类
# 1 楼答案
所以你要做的是检查两个jar是否相同,以确定github上的方法与jar中的方法相同
我认为你在试图解决错误的问题。您应该做的是从github中检出代码,然后自己构建它。在项目的根目录中应该有一个名为README、INSTALL或类似文件
现在,当然,你可能不想要项目的最新版本,你可能想要最新的稳定版本或诸如此类的东西,这是完全可行的:只需从git下载你想要的版本,然后自己构建。现在,您既有代码,又有一个jar
如果您这样做,就可以确保代码与jar匹配,并且不需要任何令人讨厌的反编译,只需要快速生成或稍后使用ant,正如自述文件所指定的那样
# 2 楼答案
您可以使用各种工具从JAR文件中提取文件,包括纯ZIP文件工具。。。当然还有作为JDK一部分的
jar
命令听起来你真正的问题是你想反编译文件。在JAR文件中对文件进行分类,以便可以将它们与一些Java源代码进行比较
坏消息是它不起作用了。。。尤其是在大规模的。是的,有些反编译器(在好的一天)会产生类似Java的东西。然而:
反编译后的Java看起来与用于生成。类文件。将反编译文件与原始源代码(或基于原始源代码的东西)进行比较将是一个冗长而困难的手动过程
反编译的代码很有可能不是有效的(可编译的)Java
更好的方法可能是在GitHub上编译源代码,并尝试比较两个版本的。类文件。然而,即使这样也不是直接的,因为:
那个。类文件包含时间戳和其他依赖于构建路径、编译开关等的内容。在比较数据时,你必须弄清楚如何消除这种“噪音”。类文件
不同版本的Java编译器产生不同风格的类文件
即使类文件版本号相同,生成的字节码中也可能存在特定于编译器版本的差异
对于小规模比较,反编译可能会。。。只要你准备好解决这个问题。还可以使用
javap
打印类文件中的字节码,并比较javap
输出# 3 楼答案
用WinRAR打开
JAR
文件,但除非人们也打包了source code
,否则你只能找到包含bytecode
的.class
文件。你还必须使用decompiler
;我通常使用JD Java Decompiler