/**
 * 创建一个空的框架
 */import javax.swing.JFrame;public class BlankFrameTest
{
public static void main(String[] args)
{
BlankFrame frame = new BlankFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.show();

}class BlankFrame extends JFrame
{
private static final int WIDTH = 300;
private static final int HEIGHT = 200;
public BlankFrame()
{
setSize(WIDTH, HEIGHT);
}
}以上文件保存成BlankFrameTest.java 用javac 编译后生成两个文件 BlankFrame.class 和BlankFrameTest.class 
再用jar cvf BlankFrame.jar manifest.mf BlankFrame.class BlankFrameTest.class
编译后生成 BlankFrame.jar 运行后报错:
failed to load Main-Class manifest attribute from E:\java\BlankFrame.jar
什么原因,怎样才能运行?

解决方案 »

  1.   

    用法:jar {ctxu}[vfm0Mi] [jar-文件] [manifest-文件] [-C 目录] 文件名 ...
    选项:
        -c  创建新的存档
        -t  列出存档内容的列表
        -x  展开存档中的命名的(或所有的〕文件
        -u  更新已存在的存档
        -v  生成详细输出到标准输出上
        -f  指定存档文件名
        -m  包含来自标明文件的标明信息
        -0  只存储方式;未用ZIP压缩格式
        -M  不产生所有项的清单(manifest〕文件
        -i  为指定的jar文件产生索引信息
        -C  改变到指定的目录,并且包含下列文件:
    如果一个文件名是一个目录,它将被递归处理。
    清单(manifest〕文件名和存档文件名都需要被指定,按'm' 和 'f'标志指定的相同顺序。
    示例1:将两个class文件存档到一个名为 'classes.jar' 的存档文件中:
           jar cvf classes.jar Foo.class Bar.class
    示例2:用一个存在的清单(manifest)文件 'mymanifest' 将 foo/ 目录下的所有
               文件存档到一个名为 'classes.jar' 的存档文件中:
           jar cvfm classes.jar mymanifest -C foo/ .
      

  2.   

    manifest.mf 内容:
    Manifest-Version: 1.0
    Created-By: 1.4.2 (Sun Microsystems Inc.)
      

  3.   

    在你的manifest.mf 中加入Main-Class:BlankFrameTest这句应该可以拉!他是说明你的入口类!
      

  4.   

    顶一下
       可以用JBuilder或其他的Java工具生成
      

  5.   

    是这样吗
    Manifest-Version: 1.0
    Created-By: 1.4.2 (Sun Microsystems Inc.)
    Main-Class:BlankFrameTest压缩后还是不行?
      

  6.   

    jar cvf BlankFrame.jar  BlankFrame.class BlankFrameTest.class
    我一直着样的,应该不需要修改MANFEST的
      

  7.   

    Manifest-Version: 1.0
    Created-By: 1.4.2 (Sun Microsystems Inc.)
    Main-Class:BlankFrameTest压缩后还是不行?
    请问出现什么错误信息啊??因为我一直都是这样用都行的啊!