【零碎JAVA】使用jar命令创建可执行的jar文件

java中,jar包是我们经常见到的东西,他是一个压缩文件。jar包跟zip格式的压缩文件的压缩机制是相同的,只不过jar包比zip文件多了一个清单文件(META-INF/MANIFEST.MF)。

-----------------------------------------------------------------------------------------------------------------------------------------

一般情况下jar包通常会以一下两种形式存在:

        1.用于项目导入,单纯的压缩文件,里面有很多的.java,.class文件,导入这样的jar包后,我们可以在项目中使用该jar包里提供的一些类,编译运行时,jvm会自动解压该jar,这使得他的跨平台性很好。

        2.可执行的jar包,他与上者的主要区别在于,在清单文件(META-INF/MANIFEST.MF)中指定了主函数,告诉编译器,加载这个jar包先加载哪个类。

           他主要在清单文件中添加了行Main-Class:<空格>主类名<回车>。

            需要注意的是,这个格式是非常严谨的,必须按照以上格式写,区分大小写。

 

------------------------------------------------------------------------------------------------------------------------------------------

下面看一下jar命令的相关信息,我们可以在控制台输入jar来查看(前提java环境变量已经配置好):

用法: jar {ctxui}[vfm0Me] [jar-file] [manifest-file] [entry-point] [-C dir] file
s ...
选项包括:
    -c  创建新的归档文件
    -t  列出归档目录
    -x  从档案中提取指定的 (或所有) 文件
    -u  更新现有的归档文件
    -v  在标准输出中生成详细输出
    -f  指定归档文件名
    -m  包含指定清单文件中的清单信息
    -e  为捆绑到可执行 jar 文件的独立应用程序
        指定应用程序入口点
    -0  仅存储; 不使用情况任何 ZIP 压缩
    -M  不创建条目的清单文件
    -i  为指定的 jar 文件生成索引信息
    -C  更改为指定的目录幷包含其中的文件
如果有任何目录文件, 则对其进行递归处理。
清单文件名, 归档文件名和入口点名称的指定顺序
与 'm', 'f' 和 'e' 标记的指定顺序相同。

示例 1: 将两个类文件归档到一个名为 classes.jar 的归档文件中:
       jar cvf classes.jar Foo.class Bar.class
示例 2: 使用现有的清单文件 'mymanifest' 并
           将 foo/ 目录中的所有文件归档到 'classes.jar' 中:
       jar cvfm classes.jar mymanifest -C foo/。

 


------------------------------------------------------------------------------------------------------------------------------------------

以上我们可以看到他的命令格式,以及两个简单的例子。
按照上面的介绍,我们可以进行打包可执行jar包了。
        1.创建一个文档(此处为a.txt),按照Main-Class:<空格>主类名<回车>的格式,指定主类。
        2.执行命令 jar cvfm [希望生成的jar包名] [指定主类的文档] [希望打包的文件夹]  如:jar cvfm test.jar a.txt com  执行完该命令,我们会发现清单文件中多了一行Main-Class: [包名].[主类名]
        3.通过jar -jar test.jar去执行该jar包。


------------------------------------------------------------------------------------------------------------------------------------------

大功告成! 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章