文章参考
http://soulshard.iteye.com/blog/346453
http://blog.sina.com.cn/s/blog_4e0c21cc010141uh.html
【MANIFEST.MF格式说明】
1. 文件中的内容以键值对的形式出现,键值对之间采用"冒号+空格"进行分隔(注意:冒号后的空格必须有,否则格式有错误)
2. Class-Path中的各项应使用空格分隔,不是逗号或分号
备注:
i) 文件每行最多72个字符,可以分多行写,但是在行的末尾必须加上空格符作为续行符(注意:末尾的续行符不能少)
ii) 从第二行开始,必须以两个空格开头,三个以上我没试过,不过不用空格开头和一个空格开头都是不行的
3. 文件的最后必须要空两行,并且这两行都必须顶格
4. 通常指定Class-Path时会采用每一行一个JAR包的方法,因为每一行的长度有限制,当JAR较多时容易超过
5. jar包内有些配置文件想放在jar包外面,比如文件config.properties:如果这个文件是以路径方式载入的,比如new file("./config/config.properties"),那么将config.properties放在jar包相同目录下的config目录下即可,也就是说“./”路径等价于jar包所在目录;如果这个文件是以ClassPath下的文件这种方式载入的,比如在Spring中载入classpath:config.properties,则在MF文件的配置文件的ClassPath中添加“./”,然后将这个配置文件与jar包放在同一个目录即可,当然也可以在MF文件的配置文件的ClassPath中添加“./config/”,然后把配置文件都放在jar包相同目录下的config目录下。
【MANIFEST.MF示例】
Manifest-Version: 1.0 Created-By: 1.6.0_10-rc2 (Sun Microsystems Inc.) Premain-Class: itracer.ITracer Can-Redefine-Classes: true Can-Retransform-Classes: true Can-Set-Native-Method-Prefix: true Class-Path: lib/asm-4.0.jar lib/asm-util-4.0.jar lib/log4j.jar
(注:示例中指定Class-Path时采用了分行的方法,则每行的后面(除最后一行外)都有一个空格,并且由于多个Classpath之间有空格符进行分隔,所以
在每行的开头有一个空格符。整个文件的最后空两行,并且这两行都必须顶格)