Java中Jar包反編譯解壓和壓縮操作方法
1、簡述
JAR 文件就是 Java Archive ( Java 檔案文件),它是 Java 的一種文檔格式。 JAR 文件非常類似 ZIP 文件。準確的說,它就是 ZIP 文件,所以叫它文件包。JAR 文件與 ZIP 文件唯一的區(qū)別就是在 JAR 文件的內容中,多出了一個META-INF/MANIFEST.MF 文件,這個文件是在生成 JAR 文件的時候自動創(chuàng)建的 (也可以自行創(chuàng)建)
2、反編譯
反編譯常用的工具:luyten,jd-gui,我們可以通過反編譯查看原來代碼,同時可以通過將class文件反編譯成Java文件。
備注:ThreadPoolExecutor 多線程反編譯是無法看到,所以要注意當前class文件是否使用的多線程,如果采用多線程,是無法直接反編譯Java來使用。
3、命令參數
用法:jar {ctxui} [vfmn0PMe] [jar文件] [清單文件] [入口點] [-C目錄]文件…
-c:創(chuàng)建新檔案 -t:列出要歸檔的目錄 -x:從存檔中提取命名(或所有)文件 -u:更新現有檔案 -v:在標準輸出上生成詳細輸出 -f:指定歸檔文件名 -m:包含來自指定清單文件的清單信息 -n:在創(chuàng)建新存檔后執(zhí)行Pack200規(guī)范化 -e:指定獨立應用程序的應用程序入口點 -0只存儲;不使用ZIP壓縮 -P:從文件名保留前導的“ /”(絕對路徑)和“ ..”(父目錄)組件 -M:不為條目創(chuàng)建清單文件 -i:為指定的jar文件生成索引信息 -C:更改為指定目錄并包含以下文件 如果任何文件是目錄,則將對其進行遞歸處理。 清單文件名稱,歸檔文件名稱和入口點名稱為 以與“ m”,“ f”和“ e”標志相同的順序指定。
A.解壓
在jar包當前文件下,cmd指令 通過jar -xvf解壓當前jar包
jar -xvf shop-order-0.0.1-SNAPSHOT.jar
B.壓縮
在當前文件目錄下,替換我們所需要替換的文件,重新將當前解壓的jar壓縮,注意后綴要帶上./META-INF/MANIFEST.MF .:
jar -uvf shop-order-0.0.1-SNAPSHOT.jar BOOT-INF/classes/application.properties
C.更新
在不解壓的情況下,更新jar包某個文件,可以直接通過jar 更新指令對某個文件修改:
jar -uvf shop-order-0.0.1-SNAPSHOT.jar BOOT-INF/classes/application.properties
4、Jar啟動
在Linux環(huán)境啟動參數設置:
java -Xms512m -Xmx512m -Xmn1024k -Xss1024k -XX:MaxMetaspaceSize=256m -XX:MetaspaceSize=256m -jar shop-order-0.0.1-SNAPSHOT.jar
a、-Xms :表示java虛擬機堆區(qū)內存初始內存分配的大小,通常為操作系統(tǒng)可用內存的1/64大小即可,但仍需按照實際情況進行分配。
b、-Xmx:表示java虛擬機堆區(qū)內存可被分配的最大上限,通常為操作系統(tǒng)可用內存的1/4大小。但是開發(fā)過程中,通常會將 -Xms 與 -Xmx兩個參數的配置相同的值,其目的是為了能夠在java垃圾回收機制清理完堆區(qū)后不需要重新分隔計算堆區(qū)的大小而浪費資源。
c、-Xmn:至于這個參數則是對 -XX:newSize、-XX:MaxnewSize兩個參數的同時配置,也就是說如果通過-Xmn來配置新生代的內存大小,那么-XX:newSize = -XX:MaxnewSize = -Xmn。
d、-XX:MaxMetaspaceSize:設置元空間最大值,默認是 -1,即不限制,只受限于本地內存大小
e、-XX:MetaspaceSize:指定元空間的初始空間大小,達到該值就會觸發(fā)垃圾回收進行類型卸載,同時收集器會對該值進行調整:如果釋放了大量的空間,就適當降低該值;如果釋放了很少的空間,那么在不超過 -XX:MaxMetaspaceSize的情況下,適當提高該值。
到此這篇關于Java中Jar包反編譯解壓和壓縮的文章就介紹到這了,更多相關java jar反編譯內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
SpringCloud+SpringBoot項目搭建結構層次的實例
這篇文章詳細介紹了SpringCloud項目的架構層次及其搭建經驗,包括Controller層、Service層、Repository層、Entity層、DTO層、Exception層等,通過文字和圖片的形式,幫助讀者理解如何組織和實現一個SpringBoot項目的不同層次2025-01-01IDEA 中創(chuàng)建并部署 JavaWeb 程序的方法步驟(圖文)
本文主要介紹了IDEA 中創(chuàng)建并部署 JavaWeb 程序的方法步驟,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-02-02java中Map、Set、List的簡單使用教程(快速入門)
這篇文章主要給大家介紹了關于java中Map、Set、List簡單使用教程,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2021-01-01