首先我們要說說為什麼要修改 jar 檔案的包名,jar 包我們會非常高頻率的使用,尤其是用一些其他三方庫的時候,往往把 java 代碼打包成 jar 檔案,友善項目依賴使用。筆者在開發過程中遇到過一些問題,是由于 jar 檔案裡面的包名和項目或者運作時環境的引用檔案包名上存在沖突導緻的,這時候我們修改 jar 檔案的包名是一個比較快速有效的解決辦法。舉兩個例子,是筆者親身經曆的兩個情況。
- Gson庫:這個相信很多人都在使用,但是直接導入 gson 的 jar 包,在 HTC Desire HD 這款手機上會抛出異常(TypeNotFoundException)
- Jackson庫:這也是個 json 解析的,我們在做蘋果推送背景的時候,背景用 java 寫的,使用 java-apns 庫,依賴于 Jackson,然後運作就會抛出異常,具體原因沒有查,初步懷疑包名沖突,修改之後就解決的。
下面介紹如何修改jar檔案的包名,需要用到一個小工具,叫做 jarjar.jar
- 下載下傳位址:http://code.google.com/p/jarjar/downloads/list
這裡我們以 gson.jar 為例,在 gson.jar 包目錄下建立一個文本檔案,名字随意,例如 rule.txt,寫入下面的内容。
rule com.google.gson.** com.google.mygson.@1
上面寫的就是修改規則,我們将包名中的 gson 修改為 mygson。打開指令行,輸入如下指令。
java -jar jarjar.jar process rule.txt gson.jar mygson.jar
指令執行完畢,同目錄下會多出一下 mygson.jar,這個就是修改包名之後的 jar 檔案,我們項目導入這個 jar 包使用即可。
專注移動網際網路産品設計研發 分享最新的移動網際網路産品和技術