Java--常用jar命令

jar常用指令

jar命令参数:

复制代码
jar命令格式:jar {c t x u f }[ v m e 0 M i ][-C 目录]文件名...
其中{ctxu}这四个参数必须选选其一。[v f m e 0 M i ]是可选参数,文件名也是必须的。
-c  创建一个jar包
-t 显示jar中的内容列表
-x 解压jar包
-u 添加文件到jar包中
-f 指定jar包的文件名
-v  生成详细的报造,并输出至标准设备
-m 指定manifest.mf文件.(manifest.mf文件中可以对jar包及其中的内容作一些一设置)
-0 产生jar包时不对其中的内容进行压缩处理
-M 不产生所有文件的清单文件(Manifest.mf)。这个参数与忽略掉-m参数的设置
-i    为指定的jar文件创建索引文件
-C 表示转到相应的目录下执行jar命令,相当于cd到那个目录,然后不带-C执行jar命令

将class文件打包成jar包

复制代码
jar -cvf test.jar TestA.class TestB.class

也可以用通配符

复制代码
jar -cvf test.jar *.class

或者,将整个文件夹打包进去

复制代码
jar -cvf test.jar com/github/

打包后的jar包会自动生成摘要文件:META-INF/MANIFEST.MF,内容如下

复制代码
Manifest-Version: 1.0
Created-By: 1.8.0_162 (Oracle Corporation)

解压jar包

复制代码
jar -xvf test.jar

查看jar包内的文件清单

复制代码
jar -tvf test.jar

新增或更新jar包内的文件

以下命令将会更新jar包内的TestA.class文件

复制代码
jar -uvf test.jar TestA.class

如果文件在jar中不存在,则添加进jar中,如下所示

添加Main.class

复制代码
jar -uvf test.jar Main.class

查看jar中的文件列表

复制代码
jar -tvf test.jar

执行jar

以下的内容会介绍如何执行jar包,Main.class作为可执行的入口类,先给出Main.java的源码,如下所示

以下两条命令都可以指定jar包的入口类,执行main方法

复制代码
java -classpath test.jar Main

-cp是-classpath的缩写形式,如果jar包还依赖了其他第三方jar包,列出来即可,如下所示

复制代码
java -cp test.jar:lib/log4j.jar:lib/commons-io.jar Main

指定jar默认入口

可以把某个类作为jar包的默认执行入口,使用如下命令

复制代码
jar -uvfe test.jar Main

执行后,我们解压jar包,可以看到META-INF/MANIFEST.MF文件多出了一行

复制代码
Manifest-Version: 1.0
Created-By: 1.8.0_162 (Oracle Corporation)
Main-Class: Main

指定classpath目录环境启动

复制代码
java -Xbootclasspath/p:/etc/config/ -jar test.jar

通过这种方式,可以把配置文件放在/etc/config/目录中,java代码扫描classpath下的配置文件时,就会以-Xbootclasspath/p:指定的目录做为优先查找路径。这样可以把配置和jar分离。

相关推荐
num_killer22 分钟前
小白的Langchain学习
java·python·学习·langchain
期待のcode1 小时前
Java虚拟机的运行模式
java·开发语言·jvm
程序员老徐1 小时前
Tomcat源码分析三(Tomcat请求源码分析)
java·tomcat
a程序小傲1 小时前
京东Java面试被问:动态规划的状态压缩和优化技巧
java·开发语言·mysql·算法·adb·postgresql·深度优先
仙俊红1 小时前
spring的IoC(控制反转)面试题
java·后端·spring
阿湯哥1 小时前
AgentScope Java 集成 Spring AI Alibaba Workflow 完整指南
java·人工智能·spring
小楼v2 小时前
说说常见的限流算法及如何使用Redisson实现多机限流
java·后端·redisson·限流算法
与遨游于天地2 小时前
NIO的三个组件解决三个问题
java·后端·nio
czlczl200209252 小时前
Guava Cache 原理与实战
java·后端·spring
yangminlei2 小时前
Spring 事务探秘:核心机制与应用场景解析
java·spring boot