关于Mainfest.MF文件的总结

本文详细介绍如何正确创建符合标准的Mainfest.MF清单文件,并提供简洁的jar包制作流程及注意事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

自己打jar包时总是出这样那样的问题,网上也看了不少,有对的有错的,这次我自己总结了一点:

1.Mainfest.MF 文件




这是一个很规范的清单文件,主要说以下几点
①在Manifest-Version:  ,Class-Path:  ,Main-Class:  , 后面都必须紧跟一个空格(基本都知道)
②每一行最多72个字符,对于mainfest-version行和main-class行基本不会超过,对于class-path就很难不超,这时就要换行写,最好的方式就是一行写一个jar包,换行写时就涉及到续行问题。多次试验证明,续行由2部分组成,上一行结尾的空格下一行开始的空格,缺一不可。对于上图:2-11行的结尾都有一个空格,(12结尾没有);而3-12行的开头都有一个空格。缺少了下一行开始的空格,jar包生成不了,提示invalid header field;缺少上一行结尾空格,虽然能生成jar,但是运行时找不到相应jar包。
对于续行,关键就是你本身是不是应该在一行,应该在但是由于72字符限制不能在的才续行,所以1,12,13 行结尾绝对不能有空格。
③关于main-fest,应该写的是 完整的包名 + 类名,不要加.java后缀。另外值得一提的是:分割还是 / 分割都行。com.venus.MainFrame 或com/venus/MainFrame(有人说必须/,本人以测,都行),
④lib后面的分割符只能是 / ,与平台无关。
⑤关于最后的空行,本人测的留一个空行,二个空行都可以,(有人说必须留2个)。

关于清单文件,大致就这么多

2.打jar包

我在打jar 包时一般都是最简的包(这里举个例子)

项目结构如下:                                                                                  打包时的选择如下:
 
                          
                       


其中会去掉  ①库lib,  ②项目的配置文件.classpath,.project,和 .fat.jar(这是一键打包工具留下的,不管它) ,③MANIFEST.MF,




而最后一步时,把清单文件加上




相应的,lib的库你需要在打的jar包的同一目录下,加上lib文件夹,里面放上你所需的依赖jar。
如下图结构:


start.bat中只需写java -jar xlsToxls.jar 即可,无需再写任何依赖jar包的路径,其中的-jar参数, 是使系统的Classpath 变量不再起作用. 虚拟机将去MANIFEST.MF中的Class-Path 下找相关的包. 
一定要有。

而打的jar包里面的结构如下,没有任何冗余。


另外:有这样的bat写法:
start jdk1.8.0_60\bin\java -Dfile.encoding=UTF-8 -cp lib/commons-logging.jar;lib/fontbox-1.7.0.jar;lib/log4j-1.2.15.jar;lib/pdfbox-1.7.0.jar;lib/poi-3.7.jar com.venus.MainFrame
我觉得是这种不如上面的方法简洁,关键是没有任何冗余


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值