同事要寫Android平台下的打包工具,遇到需要將多個jar合並成一個jar的問題。這里列一下操作步驟:
1、將所有jar文件復制至某臨時目錄中,通過jar命令解壓得到所有的.class文件
> jar -xvf xx.jar
xx.jar必須為具體的jar,不能為*.jar,會報FileNotFoundException
2、刪除臨時目錄下所有的jar文件
> del /F *.jar
3、合並所有.class文件至jar,需要切換至該臨時目錄,不然生成的jar會包含臨時目錄
> jar -cvfM game.jar .
jar命令不支持將資源“解壓”到指定的目錄,所以使用上述的方法。不過在生成最終的jar時,遇到一個很坑人的地方,使用jd-gui.exe查看jar里的目錄結構,發現它會帶上“盤符:臨時目錄”這一層,無論我怎么調整命令,將jar拖進去看的時候,它都帶有該目錄。最后讓其它用相同的命令在他的機器測試發現是沒有問題的,最后我重啟jd-gui.exe再來查看之前生成的jar發現就正常了。
更多關於jar相關的命令可以參數這里: