在 Java 中比較兩個 JAR 文件
一、概述
JAR 文件是用於分發 Java 應用程序的基本工件。有時,我們可能需要檢查 JAR 文件以檢查可能的更改。還要找出向後兼容性。
在本教程中,我們將探索用於比較 JAR 文件的不同工具。
2. 示例 JAR 文件
在本教程中,我們將比較mallet JAR 文件。 Mallet 是一個 Java 機器學習庫。它的用途包括集群、自然語言處理等。我們將比較2.0.7版和 2.0.8 版。我們將使用不同的工具來比較這兩個 JAR 文件和文件的變化。
3. 使用 Jarcomp
Jarcomp 是一個免費的跨平台工具,用於比較 JAR 和 ZIP 文件。它通過引用大小變化來顯示兩個文件之間的變化。
我們將使用它來比較示例 JAR 文件。首先,讓我們創建一個新目錄並將示例 JAR 文件複製到其中。
然後讓我們獲取jarcomp可執行 JAR 並將其放在我們創建的目錄中。最後,讓我們打開我們的終端並切換到我們的目錄。
接下來,我們將使用示例 JAR 文件運行Jarcomp
可執行 JAR:
$ java -jar jarcomp_02.jar mallet-2.0.7.jar mallet-2.0.8.jar
我們的工俱生成了一份報告,顯示了示例 JAR 文件中的更改:
該報告顯示了我們的二進製文件的變化。此外,它還總結了示例 JAR 文件中的文件數。它還指示示例 JAR 文件的總體大小。
4. 使用 PkgDiff
PkgDiff 表示包更改分析器。它可視化 ZIP、JAR、TAR.GZ、DEB 等軟件包中的更改。該工具可幫助軟件維護人員跟踪更改。並保證新舊版本之間的兼容性。
支持的平台包括 FreeBSD、Mac OS X 和 GNU/Linux。
我們將使用此工具來比較示例 JAR 文件。
4.1.安裝
首先,我們將在我們的機器上下載該工具。然後,我們將提取下載的 tar.gz:
$ tar -xvf pkgdiff-1.7.2.tar.gz
接下來,讓我們更改為提取的文件:
$ cd pkgdiff-1.7.2
最後,讓我們使用 makefile 安裝該工具:
$ sudo make install
我們的工具現在可以使用了。
4.2.用法
讓我們使用該工具可視化示例 JAR 文件中的更改。首先,讓我們切換到包含示例 JAR 文件的目錄。
然後讓我們使用pkgdiff
命令來比較示例 JAR 文件:
$ pkgdiff mallet-2.0.7.jar mallet-2.0.8.jar
我們的工俱生成了一份 HTML 格式的報告,以顯示二進製文件和源文件之間的差異:
該報告顯示了我們的二進製文件的變化。它顯示了類文件中的百分比變化。此外,它總結了二進製文件。它顯示添加和刪除的文件數。最後,它表示目錄總數和新增內容。
5.使用JAPICC
Java API Compliance Checker (JAPICC) 是一種用於評估 Java 庫之間相似性的工具。它顯示二進制和源代碼級別的更改。該工具檢查可能危及向後兼容性的修改。它檢查刪除的方法和類字段、引入的方法等。它通過比較兩個二進製文件來完成此操作。
此工具為二進制和源代碼兼容性檢查生成 HTML 報告。它同時支持 Java 和 Scala。
5.1.安裝
首先,我們將在我們的機器上下載該工具。然後,我們將解壓縮下載的 zip:
$ unzip japi-compliance-checker-2.4.zip
解壓縮我們的 zip 後,我們將進入目錄:
$ cd japi-compliance-checker-2.4
最後,我們將使用 makefile 將其安裝到我們的系統上:
$ sudo make install
我們的工具現在可以使用了。
5.2.用法
我們將使用我們的安裝工具來比較我們的示例 JAR 文件。首先,我們將創建一個新目錄並將我們的 JAR 文件移入其中。然後我們將打開我們的終端並切換到我們的新目錄。最後,我們將運行japi-compliance
命令來比較這兩個 JAR 文件:
$ japi-compliance-checker mallet-2.0.7.jar mallet-2.0.8.jar
這在我們的目錄中生成了一份報告。該報告包含我們的 JAR 文件在二進制和源代碼級別的差異。
我們的報告顯示 99.8% 的兼容性和最新版本的添加方法。它表示源文件中方法和類的總數。它還比較各個二進製文件和源文件並給出百分比變化。
6. 使用 IntelliJ IDEA
IntelliJ IDEA 是 JetBrains 的集成開發環境。 IDE 有一個用於比較 JAR 文件的內置工具。我們將使用 IDE 來比較示例 JAR 文件。首先,讓我們啟動 IDE 並打開包含示例 JAR 文件的文件夾。
接下來,讓我們選擇兩個示例 JAR 文件。最後,讓我們按 CTRL + D 來比較這兩個 JAR 文件。
我們將獲得有關 JAR 文件更改的綜合報告:
生成的報告清晰明了。它顯示了二進製文件、其內容以及更改內容。此功能簡單、簡單且功能強大。我們不需要安裝任何東西來使用它。
結果還會比較源文件。它顯示類並指示源文件中的更改。此外,它還顯示了類及其內容。並在源文件中明確顯示添加的代碼。
七、結論
在本教程中,我們研究了用於比較兩個 JAR 文件的不同工具。 IntelliJ IDEA 看起來簡單易上手。它提供了一份綜合報告,並可視化了類文件中的更改。
其他工具也可以完成這項工作。 PkgDiff 和 JAPICC 生成報告以顯示二進製文件和源文件中的更改。