jar

发布时间 2023-04-04 00:11:47作者: 大意了没有闪

查看帮助

jar --help

打包

// Hello.java
public class Hello{
    public static void main(String[] args){
        System.out.println("hello");
    }
}

// Welcome.java
public class Welcome{
    public static void main(String[] args){
        System.out.println("welcome");
    }
}

// javac *.java
// 生成2个字节码文件

// 打包,hello.jar:打包后的名称。Hello.class Welcome.class 要打包的文件
jar cvf hello.jar Hello.class Welcome.class
// 打包目录或指定文件
jar cvf hello.jar dir/
jar cvf hello.jar dir/*.class

清单文件

打包后会自动生成目录:META-INF以及子文件:MANIFEST.MF

// MANIFEST.MF内容
Manifest-Version: 1.0
Created-By: 1.8.0_301 (Oracle Corporation)

Main-Class

如果打包的是一个类库,不需要此属性,如果是可执行的jar文件,需要指定此属性

//指定jar文件中包含main方法的类,设置了该属性,就可以让一个jar文件变成可执行的。
Main-Class: xxx

指定Main-Class

// 打包时添加e参数
jar cvfe hello.jar Hello *.class

MANIFEST.MF内容

Manifest-Version: 1.0
Created-By: 1.8.0_301 (Oracle Corporation)
Main-Class: Hello

执行

java -jar hello.jar
// 输出:hello

使用自定义清单文件

// MANIFEST.MF
Manifest-Version: 1.0
Created-By: sun
Main-Class: Welcome

打包

jar cvfm hello.jar MANIFEST.MF *.class
java -jar hello.jar
//输出:welcome