分类:
2012-01-31 16:57:46
JAR文件的全称是Java Archive File。即Java档案文件。通常JAR文件是一种压缩文件,与ZIP压缩文件兼容。JAR文件与ZIP文件的区别是JAR文件中默认包含了一个名为META-INF/MANIFEST.MF的清单文件,这个文件在生成JAR包时由系统自动生成。当开发出一个应用程序后,该应用程序包含了很多类,发布该应用程序时,通常打包成JAR文件。
JAR文件作为内嵌在Java平台内部处理的标准,故具有可移植性,能够在各种平台上直接使用。把一个JAR文件添加到系统CLASSPATH环境变量中,Java将会把这个JAR文件当成一个路径来处理。JAR文件通常使用jar命令压缩而成。
jar命令详解在命令行窗口运行不带任何参数的jar命令,系统将会显示详细的jar命令用法。下面通过一些简单的例子来说明jar命令的一些基本用法。
1. 创建JAR文件:jar -cf First.jar -C classes/ .
该命令将classes/目录下全部内容生成一个名为First.jar的文件,如果当前目录已经存在First.jar,那么该文件将被覆盖。如果使用-cvf参数,将显示详细的打包过程。
2. 使用自定义清单内容创建JAR包:jar -cvfm First.jar a.txt -C classes/ .
-m选项指定读取用户清单文件信息,它会在原有清单文件基础上增加a.txt文件中的内容。
3. 查看JAR包内容:jar -tf AntTest.jar
该命令执行结果如下:
-tvf参数将显示更详细的信息。
4. 解压缩:jar xf First.jar
该命令将First.jar解压缩到当前目录下。
创建可执行JAR包对于一个可执行的JAR包,用户只需要双击它就可以运行程序了。创建可执行JAR包的关键在于:让javaw命令知道JAR包中哪个类是主类,javaw命令可以通过运行该主类来运行程序,这就要借助于清单文件。对于上面的例子需要在清单文件中增加如下一行:
Main-Class:xiyou.cm.AntTest
上面一行指定了该JAR包中的主类是xiyou.cm.AntTest,javaw命令可以通过运行该JAR包时从xiyou.cm.AntTest开始运行。可以通过jar命令的-m选项来自定义清单文件的内容。
Java在处理这个问题时不怎么好,它要求先把需要增加到清单文件中属性名、属性值放在单独的文件里定义,然后再使用-m选项的命令来读取添加到清单文件中。该文件的格式要求比较严格。
Main-Class:主类<回车>
Ø 每行只能定义一个key-value对,每行之前不能有空格。
Ø 每组key-value之间以:分隔,不能有空格
Ø 文件开头不能有空行
Ø 文件必须以一空行结束,也就是说在Main-Class:xiyou.cm.AntTest后必须有一个回车。
该文件可以保存在任何位置,以任意文件名存放。(注:该文件格式在不同版本的jdk下可能不同,以上以jdk1.6.0_25为准)
例如创建一个可执行JAR包:
jar cvfm First.jar a.txt -C classes/ .
执行该命令后,查看First.jar的清单文件META-INF/MANIFEST.MF:
Manifest-Version: 1.0
Created-By: 1.6.0_25 (Sun Microsystems Inc.)
Main-Class: xiyou.cm.AntTest
其他JAR文件实际上就是ZIP文件,所以可以使用一些常见的解压缩工具来解压缩JAR文件。如Windows下的WinRAR等。可以使用WinRAR来创建jar包,这是需要手动添加清单文件。即需要手动建立META-INF/MANIFEST.MF文件,该文件至少包含两行:
Manifest-Version: 1.0
Created-By: 1.6.0_25 (Sun Microsystems Inc.)