使用命令行生成jar包

JAR包是Java中所特有一种压缩文档,其实大家可以把它理解为zip包。当然也是有区别的,JAR包中有一个META-INF\MANIFEST.MF文件,当你生成JAR包时,它会自动生成。

JAR包是由JDK安装目录\bin\jar.exe命令生成的,当我们安装好JDK,设置好path路径,就可以正常使用jar.exe命令,它会用lib\tool.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命令

二.示例

测试类Hello.java

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

生成class文件

javac Hello.java

如果有中文,报”编码GBK的不可映射字符”的错误,执行下面的命令。

javac -encoding UTF-8 Hello.java

打包

jar cvf hello.jar Hello.class

可运行的jar包

需要借助“manifest.mf”配置文件

Manifest-Version: 1.0
Class-Path: .
Main-Class: Hello

这里有几个点,需要注意一下:

· key和value之间,必须有一个空格。

· 最后必须预留一个空行

· Class-Path设置为 ”.” 是为了声明从当前目录开始查找

· Main-Class是包含main函数的入口类,如果有包名,需要填写完成的类名。

关于manifest.mf的具体配置,可参照官方说明:

https://docs.oracle.com/javase/8/docs/technotes/guides/jar/jar.html

打包

jar cvfm hello.jar manifest.mf Hello.class

此处如果manifest.mf配置不对,会被忽略,切记,此配置一定要按照上述的注意项配置。

验证打包结果

java -jar hello.jar

参考文章:

http://blog.csdn.net/marryshi/article/details/50751764

https://www.cnblogs.com/fsjohnhuang/p/4046856.html

https://www.cnblogs.com/xiaoyucoding/p/7683961.html

你可能感兴趣的:(java,jar,manifest.mf)