用jar发布程序时出现java.io.IOException: invalid header field 错误!!!
                  at java .util.jar.Attributes.read(Attributes.java:389)
                 at java .util.jar.Manifest.read(Manifest.java:182)
                 at java .util.jar.Manifest.(int)(Manifest.java:151)
                 at sun.tools .jar.Main.run(Main.java:151)
                 at sun.tools .jar.Main.main(Main.java:1149)

解决方案 »

  1.   

    http://bbs.csdn.net/topics/50451241
    http://hi.baidu.com/sppeivan/item/5d1f681593b31609d1d66d3d
    具体情况自己看吧
      

  2.   

    cmd窗口执行打包命令: jar cvfm example5.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:151) 
            at sun.tools.jar.Main.main(Main.java:1149) 原因: Bundle-Activator项的键和值之间少了一个空格 
    Bundle-Name: Service Tracker-based dictionary client 
    Bundle-Description: A dictionary client using the Service Tracker. 
    Bundle-Vendor: Apache Felix 
    Bundle-Version: 1.0.0 
    Bundle-Activator:com.wwt.example5.Activator 
    Import-Package: org.osgi.framework, 
    org.osgi.util.tracker, 
    com.wwt.example2.service 
      

  3.   

    已经加空格了
    mf文件内容
    abcd.mf
    Manifest-Version: 1.0
    Main-Class: leiming
    Created-By: 1.2(Sun Microsystems Inc.)
      

  4.   

    执行命令
    D:\chaper\jar cfm Name.jar abcd.mf *.class
      

  5.   

    出现这样的错误一般是Main-Class后面少了空格,不过既然你后面已经加了空格,排除此原因。在你代码的最后一行要打一个回车键,否则那一行是不能打包进去的。
    关于Manifest:
    确认每行都以回车结束,否则改行将会被忽略
    如果Class-Path 中的存在路径,使用"/"分隔目录.使用空行分隔主属性和package属性
    使用"/"而不是"."来分隔package 和class ,比如 com/example/myapp/
    class 要以.class结尾,package 要以 / 结尾
      

  6.   

     jar cvfm example.jar manifest.mf example.class
      (c:新建一个JAR文件
    v:输出打包结果
    f:JAR文件名
    m:清单文件名)
    前提是系统的path路径和classpath路径都已经设置好了