码迷,mamicode.com
首页 > 编程语言 > 详细

jar打包

时间:2016-05-06 12:34:22      阅读:185      评论:0      收藏:0      [点我收藏+]

标签:

我们一般用如下命令来把class文件加入到一个jar中:

jar -cvf test.jar com  (将com中的文件打包成一个名叫test.jar文件)

上面的文件不包括MANIFEST.MF
如果自动生成这个文件呢?可以用如下命令:

jar -cvf test.jar MANIFEST.MF com

jar目录下将会生成一个META-INF文件夹,该文件夹下面有一个MANIFEST.MF文件,可以根据相关的属性添加相应的项。

还可以在当前文件夹下面创建一个MANIFEST.MF 文件,将相关的项添加进去如下:

Manifest-Version: 1.0
Created-By: 1.8.0_77 (Sun Microsystems Inc.)
Premain-Class: com.mobile.transformer.MyClass

也可以只加必要的项。例如:

Premain-Class: com.mobile.transformer.MyClass

和上面的效果一样。

Manifest-Version: 1.0
Created-By: 1.8.0_77 (Sun Microsystems Inc.)

这两项会自动生成。

注意每个项的“:”后面要留一个空格,否则在打包的时候会报,最后要加一个空行,否则会少一条数据。

如果“:”后面缺少空格就会打包的时候会出现如下的错误提示:

java.io.IOException: invalid header field
        at java.util.jar.Attributes.read(Attributes.java:410)
        at java.util.jar.Manifest.read(Manifest.java:199)
        at java.util.jar.Manifest.<init>(Manifest.java:69)
        at sun.tools.jar.Main.run(Main.java:176)
        at sun.tools.jar.Main.main(Main.java:1288)

利用MANIFEST.MF的打包命令如下:

jar cvfm test.jar MANIFEST.MF -C com/ .

当然你也可以查询jar相关的命令:

jar -help
非法选项: h
用法: jar {ctxui}[vfmn0PMe] [jar-file] [manifest-file] [entry-point] [-C dir] files ...
选项:
    -c  创建新档案
    -t  列出档案目录
    -x  从档案中提取指定的 (或所有) 文件
    -u  更新现有档案
    -v  在标准输出中生成详细输出
    -f  指定档案文件名
    -m  包含指定清单文件中的清单信息
    -n  创建新档案后执行 Pack200 规范化
    -e  为捆绑到可执行 jar 文件的独立应用程序
        指定应用程序入口点
    -0  仅存储; 不使用任何 ZIP 压缩
    -P  保留文件名中的前导 ‘/‘ (绝对路径) 和 ".." (父目录) 组件
    -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打包

标签:

原文地址:http://blog.csdn.net/rznice/article/details/51327485

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!