jar cvfm aa.jar mymanifest.mf aa.class
mymanifest.mf中包含:
Main-Class: aa//aa前空格

解决方案 »

  1.   

    举个例子: 如果你的aa.java中package是test, aa.class在test目录下mymanifest.mf文件:(注意:Main-Class那行最后一定要有回车)
    Manifest-Version: 1.0
    Created-By: 1.4.2 (Sun Microsystems Inc.)
    Main-Class: test.aa
    打包
    在test上层目录下执行: jar cvfm aa.jar mymanifest.mf test执行
    java -jar aa.jar
      

  2.   

    mymainifest.mf里面应该写明主类等信息!可以使用命令
    jar cvmf mymanifest.mf aa.jar aa.class
    来生成JAR文件,我曾经参照网上的一些介绍作过,但是没有成功,双击后显示找不到MAIN CLASS,
    后来使用了IDE封装JAR就成功了,ECLIPSE 和JBUILDER都可以!
      

  3.   

    一些ide的导出有些问题,建议楼主还是用命令的好
    注意main-class声明那行最后得回车一下,这问题曾经折磨我好久
      

  4.   

    可以先jar cvf XXX.jar *.*然后用WinRAR打开,加减你所需要的文件呵呵
      

  5.   

    在c:\jar 回车后看看帮助,在看的你的classpath设的对不? jar cvf  xxx.jar aa.class 再在加Main-Class:(空格) test.aa (回车) 后java -jar xxx.jar
      

  6.   

    1.将应用程序压缩为jar文件可以使用jar.exe把一些文件压缩成一个JAR文件,来发布我们的应用程序。我们可以把java应用程序中涉及到的类压缩成一个JAR文件,比如Tom.jar,然后使用java解释器(使用参数-jar)执行这个压缩文件,或用鼠标双击该文件,执行这个压缩文件。
    java -jar Tom.jar
    假设应用程序中有两个类A、B,其中A是主类,生成一个JAR文件的步骤如下:
    (1)首先,用文本编辑器(比如Windows下的记事本)编写一个清单文件Mymoon.mf:
    Manifest-version: 10
    Main-Class: A
    Created-By: 1.2.2(sun Microsystems Inc.):
    比如,保存Mymoon.mf到D:\test。需要注意的是在编写清单文件时,在“Manifest-version:”和“1.0”之间、“Main-Class:”和主类“A”之间,以及“Created-By:”和“1.2.2”之间必须有且只有一个空格。
    (2)生成JAR文件
    D:\test\jar cfm Tom.jar Mymoon.mf A.class B.class
    其中参数c边式要生成一个新的JAR文件;f表示要生成的JAR文件的名字;m表示文件清单文件的名字
    注:如果机器安装过WinRAR解压软件,并将.jar文件与该解压缩软件做了关联,那么Tom.jar文件的类型是WinRAR,使得Java程序无法运行。因此,我们在发布软件时,还应该再写一个有如下内容的bat文件Tom.bat:
    javaw -jar Tom.jar2.将类压缩成jar文件我们可以使用jar.exe把一些类的字节码文件压缩成一个JAR文件,然后将这个JAR文件存放到JAVA运行环境的扩展框架中,即将 该JAR文件存放在JDK安装目录的jre\lib\ext文件夹中。这样,其他的程序就可以使用这个JAR文件中的类来创建对象了。
    现在,我们就将D:\test中的Test1.class和Test2.class压缩成一个JAR文件Jerry.jar:
    Test1.javapublic class Test1 { 
        public void fTest1()           
        { System.out.println("I am a method In Test1  class");           
        }          
    }Test2.javapublic class Test2         
      { public void fTest2()           
        { System.out.println("I am a method In Test2  class");           
      }          
    }
    (1)首先编写一个清单文件(Manifestfiles)
    moon.mf
    Manifest-version: 1.0
    Class: Test1 Test2
    Created-By: 1.2.2(Sun Microsystems Inc.)
    保存moon.mf到D:\test
    (2)生成JAR文件
    D:\test\jar cfm Jerry.jar moon.mf Test1.class Test2.class 1. 如果JAR文件双击不能运行, 可以在文件类型里将JAR文件的打开程序指向"Java(TM) 2 Platform Standart Edition Binary"2. 注意, Manifest文件的内容一定要以一个空行为结尾, 但最起码在文件内容结尾处也得有一个回车. 原因是Manifest文件的最后一行是不会被解析的, 所以不能让文件的最后一行有内容. 关于这个问题java.sun.com在线文档有一句话:
    Warning: The text file must end with a new line or carriage return. The last line will not be parsed properly if it does not end with a new line or carriage return.3. 注意, jar.exe工具的命令行选项开关与参数也是有一些规定的, 比如"jar cvfm AppGraIo.jar AppGraIo.class", 这是一个错误的命令行书写, 所以jar.exe工具会报错, 正确的应该是"jar cvmf Manifest.MF XXX.jar XXX.class ...", 选项开关cvmf不要随便写, cv两个没有顺序限制, 但选项开关mf的顺序必须对应上后边的Manifest.MF与XXX.jar的顺序, 也就是说Manifest.MF在XXX.jar的前边, 那么选项开关就得mf这样写, 如果XXX.jar在Manifest.MF前边, 那选项开关就得fm这样写, 所以mf或者fm这里一定要注意顺序问题, 否则就会报
    C:\java>jar cvfm AppGraIo.jar AppGraIo.class
    java.io.IOException: invalid header field
    at java.util.jar.Attributes.read(Attributes.java:389)
    at java.util.jar.Manifest.read(Manifest.java:167)
    at java.util.jar.Manifest.<init>(Manifest.java:52)
    at sun.tools.jar.Main.run(Main.java:123)
    at sun.tools.jar.Main.main(Main.java:903)
    这种错误. 大家可以看到这个操作里选项开关正好与文件名参数的顺序相反.
    关于这第3个问题, java.sun.com在线文档里有句话说的很明白:
    The m and f options must be in the same order as the corresponding arguments.
    // 意思是说选项开关m与f的顺序必须要与后边的参数相对应
    The c and f options can appear in either order, but there must not be any space between them.
    // 意思是选项开关c与f可以以任何顺序出现, 但两者之间不能有空格