jar命令的用法 jar命令的事例

一、基本用法:jar {ctxu}[vfm0Mi] [jar-文件] [manifest-文件] [-C 目录] 文件名 ... 选项: -c 创建新的存档 -t 列出存档内容的列表 -x 展开存档中的命名的(或所有的〕文件 -u 更新已存在的存档 -v 生成详细输出到标准输出上 -f 指定存档文件名 -m 包含来自标明文件的标明信息 -0 只存储方式;未用ZIP压缩格式 -M 不产生所有项的清单(manifest〕文件 -i 为指定的jar文件产生索引信息 -C 改变到指定的目录,并且包含下列文件: 如果一个文件名是一个目录,它将被递归处理。 清单(manifest〕文件名和存档文件名都需要被指定,按'm' 和 'f'标志指定的相同顺序。

示例1:将两个class文件存档到一个名为 'classes.jar' 的存档文件中: jar cvf classes.jar Foo.class Bar.class

示例2:将 foo/ 目录下的所有文件存档到一个名为 'classes.jar' 的存档文件中:可以切换到foo的上级目 录,然后输入 jar cvf classes.jar foo

示例3:将foo/目录和lib/目录到存档到一个名为 'classes.jar' 的存档文件中:可以切换到foo的上级目 录,然后输入 jar cvf classes.jar foo lib

示例4:将classes下所有的文件都存档到一个名为 'classes.jar' 的存档文件中:可以切换到classes目 录,然后输入 jar cvf classes.jar .  

二、制作可运行的jar包

  1. 我们只有一个HelloWorld,如下:    public class HelloWorld{   public static void main(String[ ] args){   System.out.println(“Hi, Hello World!”);   } } 将这个java文件存到C盘跟目录下,接下来,在先前打开的命令提示符下(跳转到C盘提示符下),我们输入javac HelloWorld.java,然后继续输入:jar cvf hello.jar HelloWorld.class,回车后去你的C盘看看,多了什么,没错 hello.jar 。   基本的步骤我们现在都知道了,你可以自己去尝试一下随着jar后面的参数的不同,结果有什么变化。   
  2. 紧接着我们看看如何运行我们的jar包。在进入正题之前,你要先打开我们刚刚做好的jar包看看,多了什么呢,META-INF目录?再看看里面是什么,还有一个MANIFEST.MF文件是不是?用文本编辑器(我这里是UltraEdit)打开它看看(注意文件未尾有两空行): Manifest-Version: 1.0 Created-By: 1.6.0 (Sun Microsystems Inc.) 这里我们对它进行修改,加一句:Main-Class: HelloWorld (在第三行,注意在Main-Class:和类之间要有一个空格,否则运行时说“Invalid or corrupt jarfile xxx.jar”)。这个就是我们之前写的那个类,也就是我们的入口类。也即:(文件未尾的两个空行不能少,否则运行时也说“Invalid or corrupt jarfile xxx.jar”) Manifest-Version: 1.0 Created-By: 1.6.0 (Sun Microsystems Inc.) Main-Class: HelloWorld 接下来,我们在命令提示符里执行:    jar umf MANIFEST.MF hello.jar   这样我们使用了我们自己的MANIFEST.MF文件对原来默认的进行了更新(其实也可用winrar之类的解压工具打开jar包,把新的MANIFEST.MF拖进去)。最后的一步,验证我们做的一切,在命令提示符中输入: java -jar hello.jar 出现了什么, Hi, Hello World!

三、关于MANIFET.MF文件: 打 Java 包的时候可以有一个清单文件:MANIFEST.MF,它是打包的关键性文件,主要是设置执行入口类和支持库的路径,在运行 Java 应用程序时会根据此文件中给出的信息来查找入口类和支持库。 它的内容一般包括: Manifest-Version: 1.0 Created-By: 1.6.0 (Sun Microsystems Inc.) Main-Class: HelloWorld 其中比较容易忽略的是还可以有一个Class-Path属性的设置,Class-Path:用来指定支持库的路径,程序运行时依据 Class-Path 项的设置路径来查找支持库,每一个支持库之间用空格分开。比如这样写清单文件: Manifest-Version: 1.0 Class-Path: ./lib/msbase.jar ./lib/mssqlserver.jar ./lib/msutil.jar Created-By: 1.6.0 (Sun Microsystems Inc.) Main-Class: org.test.HelloWorld 这样当前目录的 lib 目录下的几个包都可以在运行时被找到,我们制作可自运行的 Java 程序时,就不用写一个批处理文件来写明 CLASSPATH ,直接在这里指定就可以了。