执行:
D:\aaa\DMDemo>jar -cvfm demo.jar MANIFEST.MF com
Java.io.IOException: invalid header field
at java.util.jar.Attributes.read(Attributes.java:393)
at java.util.jar.Manifest.read(Manifest.java:182)
at java.util.jar.Manifest.<init>(Manifest.java:52)
at sun.tools.jar.Main.run(Main.java:132)
at sun.tools.jar.Main.main(Main.java:1022)
----------------------------------------------
错误分析:
Manifest-Version: 1.0
Class-Path:
Created-By: 1.6.0_06 (Sun Microsystems Inc.)
Main-Class: com.demo.HelloWord
每个标签冒号后都跟上一个空格
最后一行需要有一个回车键,否则后面那一行是不能打包进去的
------------------------------------------------
再执行:
D:\aaa\DMDemo>jar -cvfm demo.jar MANIFEST.MF com
标明清单(manifest)
增加:com/(读入= 0) (写出= 0)(存储了 0%)
增加:com/demo/(读入= 0) (写出= 0)(存储了 0%)
增加:com/demo/HelloWord.class(读入= 547) (写出= 341)(压缩了 37%)
D:\aaa\DMDemo>java -jar x.jar
Unable to access jarfile x.jar
D:\aaa\DMDemo>java -jar demo.jar
Hello Word
D:\aaa\DMDemo>
-------------------------------------------------------------------
最后说明:Manifest技巧
总是以Manifest-Version属性开头
每行最长72个字符,如果超过的话,采用续行
确认每行都以回车键结束,否则改行将会被忽略
如果Class-Pass中存在路径,使用“/”分隔目录,与平台无关
使用空行分隔属性和package属性
使用"/"而不是"."来分隔package和class。比如com/example/myapp/
class要发.class结尾,package要以/结尾
如果依赖了多个jar包,可以使用空格进行分割。