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指定独立应用程序的应用程序入口点
        捆绑到可执行的jar文件中
    -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 /

5. 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

上一篇:Dubbo-Admin 功能展示与实操解析


下一篇:32、Flutter之自定义路由切换动画