jar命令大全

2020-10-12  本文已影响0人  zheng93775

将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

    0 Mon Oct 12 16:50:14 CST 2020 META-INF/
    69 Mon Oct 12 16:50:14 CST 2020 META-INF/MANIFEST.MF
    0 Mon Oct 12 16:50:02 CST 2020 TestA.class
    0 Mon Oct 12 16:50:06 CST 2020 TestB.class

新增或更新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

查看的结果如下,可以看到,多出了Main.class

    0 Mon Oct 12 16:50:14 CST 2020 META-INF/
    69 Mon Oct 12 16:50:14 CST 2020 META-INF/MANIFEST.MF
    0 Mon Oct 12 16:50:02 CST 2020 TestA.class
    0 Mon Oct 12 16:50:06 CST 2020 TestB.class
  414 Mon Oct 12 17:23:04 CST 2020 Main.class

执行jar

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

public class Main {
    public static void main(java.lang.String[] args) {
        System.out.println("hello world!");
    }
}

指定入口类执行jar

以下两条命令都可以指定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

jar包就有了默认的执行入口,那么我们就可以使用简捷的方式运行jar了,如下

java -jar test.jar

指定classpath目录环境启动

java -Xbootclasspath/p:/etc/config/ -jar test.jar

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

上一篇 下一篇

猜你喜欢

热点阅读