首先咱們要說說爲何要修改 jar 文件的包名,jar 包咱們會很是高頻率的使用,尤爲是用一些其餘三方庫的時候,每每把 java 代碼打包成 jar 文件,方便項目依賴使用。筆者在開發過程當中遇到過一些問題,是因爲 jar 文件裏面的包名和項目或者運行時環境的引用文件包名上存在衝突致使的,這時候咱們修改 jar 文件的包名是一個比較快速有效的解決辦法。舉兩個例子,是筆者親身經歷的兩個狀況。html
Gson庫:這個相信不少人都在使用,可是直接導入 gson 的 jar 包,在 HTC Desire HD 這款手機上會拋出異常(TypeNotFoundException)java
Jackson庫:這也是個 json 解析的,咱們在作蘋果推送後臺的時候,後臺用 java 寫的,使用 java-apns 庫,依賴於 Jackson,而後運行就會拋出異常,具體緣由沒有查,初步懷疑包名衝突,修改以後就解決的。編程
下面介紹如何修改jar文件的包名,須要用到一個小工具,叫作 jarjar.jarjson
這裏咱們以 gson.jar 爲例,在 gson.jar 包目錄下新建一個文本文件,名字隨意,例如 rule.txt,寫入下面的內容。google
rule com.google.gson.** com.google.mygson.@1
上面寫的就是修改規則,咱們將包名中的 gson 修改成 mygson。打開命令行,輸入以下命令。spa
java -jar jarjar.jar process rule.txt gson.jar mygson.jar
命令執行完畢,同目錄下會多出一下 mygson.jar,這個就是修改包名以後的 jar 文件,咱們項目導入這個 jar 包使用便可。命令行