jar包解壓和壓縮


JAR 文件就是 Java Archive ( Java 檔案文件),它是 Java 的一種文檔格式。 JAR 文件非常類似 ZIP 文件
准確的說,它就是 ZIP 文件,所以叫它文件包。JAR 文件與 ZIP 文件唯一的區別就是在 JAR 文件的內容中,多出了一個META-INF/MANIFEST.MF 文件,這個文件是在生成 JAR 文件的時候自動創建的 (也可以自行創建)

1. jar包還原

Soring boot 項目jar包解壓之后 修改文件之后 在不依靠開發工具的情況下重新壓縮jar包 打包命令如下:

jar -cvf0M xxx.jar BOOT-INF/ META-INF/ org/

具體操作

[admin@custmer-development-d apps_other]$ ll
total 20736
-rw-rw-r--. 1 admin admin 21224413 Nov 18 10:36 alert-0.0.1-SNAPSHOT.jar
drwxr-xr-x. 4 admin admin       67 Nov 18 10:35 BOOT-INF
drwxr-xr-x. 3 admin admin       36 Nov 18 10:35 META-INF
drwxr-xr-x. 3 admin admin       28 Feb  1  1980 org
[admin@custmer-development-d apps_other]$ jar -cvf0M alert.jar BOOT-INF/ META-INF/ org/


[admin@custmer-development-d apps_other]$ ll
total 60256
-rw-rw-r--. 1 admin admin 21224413 Nov 18 10:36 alert-0.0.1-SNAPSHOT.jar
-rw-r--r--. 1 admin admin 19095463 Nov 20 18:27 alert.jar
drwxr-xr-x. 4 admin admin       67 Nov 18 10:35 BOOT-INF
drwxr-xr-x. 3 admin admin       36 Nov 18 10:35 META-INF
drwxr-xr-x. 3 admin admin       28 Feb  1  1980 org
[admin@custmer-development-d apps_other]$ java -jar alert.jar
  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::                (v2.4.0)

2020-11-20 18:30:27 [main] INFO  cn.AlertApplication -Starting AlertApplication v0.0.1-SNAPSHOT using Java 1.8.0_60 on custmer-development-d-031162.te.td with PID 10833 (/home/admin/apps_other/alert01.jar started by admin in /home/admin/apps_other)
2020-11-20 18:30:27 [main] INFO  cn.AlertApplication -The following profiles are active: dev
2020-11-20 18:30:29 [main] INFO  org.springframework.boot.web.embedded.tomcat.TomcatWebServer -Tomcat initialized with port(s): 8082 (http)
2020-11-20 18:30:29 [main] INFO  org.apache.coyote.http11.Http11NioProtocol -Initializing ProtocolHandler ["http-nio-8082"]
2020-11-20 18:30:29 [main] INFO  org.apache.catalina.core.StandardService -Starting service [Tomcat]

2. jar常用命令

壓縮

jar -cvf xxx.jar

解壓

jar -xvf xxx.jar

更新

jar -uvf xxx.jar BOOT-INF/classes/application-dev.yml

列出jar包內容

jar -tvf xxx.jar

運行jar

java -jar xxx.jar
java -jar xxx.jar &
nohup java -jar &

-   &表示在當窗口關閉時,程序才會中止運行。&代表讓該命令在后台
-   命令 “nohup java -jar XXX.jar &” 表示不掛斷運行命令,當賬戶退出或終端關閉時,程序仍然運行。注意,該作業的所有輸出被重定向到nohup.out的文件中。
nohup java -jar XXX.jar >temp.log &

表示不掛斷運行命令,當賬戶退出或終端關閉時,程序仍然運行,並且該作業的所有輸出被重定向到temp.log的文件中。“ > temp.log ” 該命令就是指定日志輸出的文件。
">>"表示將輸出以追加的方式重定向到Log.log中。

nohup java -jar XXX.jar >>temp.txt &
nohup java -jar XXX.jar > /dev/null 2>&1 &

-   標准輸入文件(stdin):stdin的文件描述符為0,Unix程序默認從stdin讀取數據。
-   標准輸出文件(stdout):stdout 的文件描述符為1,Unix程序默認向stdout輸出數據。
    標准錯誤文件(stderr):stderr的文件描述符為2,Unix程序會向stderr流中寫入錯誤信息。
-   屏蔽輸出,起到禁止輸出作用:/dev/null 是一個特殊的文件,寫入到它的內容都會被丟棄;如果嘗試從該文件讀取內容,那么什么也讀不到。但是 `/dev/null 文件非常有用,將命令的輸出重定向到它,會起到"禁止輸出"的效果`。
    “> Log.log 2>&1” :表示將 stdout 和 stderr 合並后重定向到 Log.log
-   可通過jobs命令查看后台運行任務

3.jar命令參數

  • 用法:jar {ctxui} [vfmn0PMe] [jar文件] [清單文件] [入口點] [-C目錄]文件...
  • 選項:
-c:創建新檔案
-t:列出要歸檔的目錄
-x:從存檔中提取命名(或所有)文件
-u:更新現有檔案
-v:在標准輸出上生成詳細輸出
-f:指定歸檔文件名
-m:包含來自指定清單文件的清單信息
-n:在創建新存檔后執行Pack200規范化
-e:指定獨立應用程序的應用程序入口點
-0只存儲;不使用ZIP壓縮
-P:從文件名保留前導的“ /”(絕對路徑)和“ ..”(父目錄)組件
-M:不為條目創建清單文件
-i:為指定的jar文件生成索引信息
-C:更改為指定目錄並包含以下文件
如果任何文件是目錄,則將對其進行遞歸處理。
清單文件名稱,歸檔文件名稱和入口點名稱為
以與“ m”,“ f”和“ e”標志相同的順序指定。

示例1:將兩個類文件歸檔到名為classes.jar的歸檔文件中:

jar cvf classes.jar Foo.class Bar.class

示例2:使用現有清單文件“ mymanifest”並將所有foo /目錄中的文件放入“ classes.jar”:

jar cvfm classes.jar mymanifest -C foo /

4. java -jar 啟動參數詳情

java -Xms800m -Xmx800m -XX:PermSize=256m -XX:MaxPermSize=512m -XX:MaxNewSize=512m -jar xxx.jar > xxx.file 2>&1 &

1、-Xms :表示java虛擬機堆區內存初始內存分配的大小,通常為操作系統可用內存的1/64大小即可,但仍需按照實際情況進行分配。有可能真的按照這樣的一個規則分配時,設計出的軟件還沒有能夠運行得起來就掛了。
2、-Xmx: 表示java虛擬機堆區內存可被分配的最大上限,通常為操作系統可用內存的1/4大小。但是開發過程中,通常會將 -Xms 與 -Xmx兩個參數的配置相同的值,其目的是為了能夠在java垃圾回收機制清理完堆區后不需要重新分隔計算堆區的大小而浪費資源。
3、-XX:newSize:表示新生代初始內存的大小,應該小於 -Xms的值;
4、-XX:MaxnewSize:表示新生代可被分配的內存的最大上限;當然這個值應該小於 -Xmx的值;
5、-Xmn:至於這個參數則是對 -XX:newSize、-XX:MaxnewSize兩個參數的同時配置,也就是說如果通過-Xmn來配置新生代的內存大小,那么-XX:newSize = -XX:MaxnewSize = -Xmn,雖然會很方便,但需要注意的是這個參數是在JDK1.4版本以后才使用的。
6、-XX:PermSize:表示非堆區初始內存分配大小,其縮寫為permanent size(持久化內存)
7、-XX:MaxPermSize:表示對非堆區分配的內存的最大上限。

localhost:~ hjma$ java -X
    -Xmixed           混合模式執行(默認)
    -Xint             僅解釋模式執行
    -Xbootclasspath:<用 : 分隔的目錄和 zip/jar 文件>
                      設置引導類和資源的搜索路徑
    -Xbootclasspath/a:<用 : 分隔的目錄和 zip/jar 文件>
                      附加在引導類路徑末尾
    -Xbootclasspath/p:<用 : 分隔的目錄和 zip/jar 文件>
                      置於引導類路徑之前
    -Xdiag            顯示附加診斷消息
    -Xnoclassgc        禁用類垃圾收集
    -Xincgc           啟用增量垃圾收集
    -Xloggc:<file>    將 GC 狀態記錄在文件中(帶時間戳)
    -Xbatch           禁用后台編譯
    -Xms<size>        設置初始 Java 堆大小
    -Xmx<size>        設置最大 Java 堆大小
    -Xss<size>        設置 Java 線程堆棧大小
    -Xprof            輸出 cpu 分析數據
    -Xfuture          啟用最嚴格的檢查,預計會成為將來的默認值
    -Xrs              減少 Java/VM 對操作系統信號的使用(請參閱文檔)
    -Xcheck:jni       對 JNI 函數執行其他檢查
    -Xshare:off       不嘗試使用共享類數據
    -Xshare:auto      在可能的情況下使用共享類數據(默認)
    -Xshare:on        要求使用共享類數據,否則將失敗。
    -XshowSettings    顯示所有設置並繼續
    -XshowSettings:system
                      (僅限 Linux)顯示系統或容器
                      配置並繼續
    -XshowSettings:all
                      顯示所有設置並繼續
    -XshowSettings:vm 顯示所有與 vm 相關的設置並繼續
    -XshowSettings:properties
                      顯示所有屬性設置並繼續
    -XshowSettings:locale
                      顯示所有與區域設置相關的設置並繼續

-X 選項是非標准選項。如有更改,恕不另行通知。

轉載出處:https://blog.csdn.net/qq_39900031/article/details/109860769


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM