jar打包

我们一般用如下命令来把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/ .
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在进行jar打包时,可以使用不同的方法来包含所需的文件和依赖。 引用中给出的示例使用了Maven的dependency和resource标签来包含本地的jar包和资源文件。其中,在dependency标签中使用systemPath来指定本地jar包的路径,而在resource标签中使用includes来指定所需的jar包。 引用中给出的示例是使用Gradle的fileTree依赖来包含libs文件夹下所有的jar包。 引用中给出的示例使用了Gradle的shadow插件来完成打包。在dependencies部分,使用implementation fileTree(dir: 'libs', include: ['*.jar'])来包含libs文件夹下所有的jar包。 因此,根据这些引用内容,可以使用不同的方法来包含jar打包时所需的文件和依赖。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [打包jar包时 如何将外部依赖包含进去](https://blog.csdn.net/u010253246/article/details/109158710)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [spring-cglib-repack-3.2.11.jar+spring-objenesis-repack-3.0.jar 重新打包](https://download.csdn.net/download/share_heart/11148210)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [gradle 打包jar-含依赖文件](https://blog.csdn.net/carson2440/article/details/82217461)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值