比方说以下这个简单的窗口,如何将它变成一个可双击打开的jar文件import java.awt.*;
import java.awt.event.*;
import javax.swing.*;public class FrameDemo extends JFrame 
   implements ActionListener {

public FrameDemo() {
setTitle("FrameDemo");
JButton btn = new JButton("退出");
add(btn);
btn.addActionListener(this);
}

public void actionPerformed(ActionEvent e) {
System.exit(0);
}

public static void main(String[] args) {
FrameDemo f = new FrameDemo();
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.pack();
f.setVisible(true);
}
}

解决方案 »

  1.   

    http://world9918.blogspot.com/2009/06/java-jar.html
      

  2.   

    META-INF文件夹下面要有一个MANIFEST.MF文件。
    里面内容如下:
    Manifest-Version: 1.0
    Main-Class: houlei.csdn.util.StringResolution
    其中:houlei.csdn.util.StringResolution是你的入口程序类,即带有main方法的类。
      

  3.   

    可否再详细一点,有关jar打包我只知道jar cvf test.jar Test1.java Test2.java ...这种方法
    其它的不太清楚,能否请教一下命令行中应该输入什么?
      

  4.   

    用eclipse吗?file->export->java->runnable jar file
      

  5.   

    用netbeans 在项目里面添加main类。新建个项目,把这个类的名字改为main  运行-生成主项目,然后在控制台那里会显示jar文件保存的位置了
      

  6.   

    java -cvfm
    eclipse工程的话直接用fat.jar插件打包
    打包的时候注意自定义MANIFEST.MF
      

  7.   

    原来Eclipse还有这个功能啊,谢谢了
      

  8.   

    这个cvfm参数为什么我运行会出错啊
    D:\>jar cvfm t.jar FrameDemo.java
    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.<init>(Manifest.java:52)
            at sun.tools.jar.Main.run(Main.java:132)
            at sun.tools.jar.Main.main(Main.java:1022)
    不知道这么写对不对
      

  9.   

    1在C盘编译FrameDemo.java
       javac FrameDemo.java
    2创建my.mf,内容如下:
    Manifest-Version: 1.0
    Main-Class: FrameDemo
    Created-By: 1.6.0_10-rc2 (Sun Microsystems Inc.)
    3再输入
    jar cvfm my.jar my.mf FrameDemo.class
    4双击my.jar注意:my.mf三行的:后面都有一个空格,Created-By后面的1.6.0_10-rc2值不一定是这个
    你可以java -version看下你JDK的版本
      

  10.   

    我来说说,就说怎么用命令行打可以执行的jar包,前提是jdk已经安装配置好
    第一种情况:不带package
    这个源程序和编译太简单就不写了
    打jar包:jar -cvfe hello.jar Hello Hello.class
    执行:java -jar hello.jar当然了,如果jar包中的Hello含有GUI的应用程序,就可以启动GUI第二种情况:带package
    比如:Hello.java的包为package com.tarena;package com.tarena;public class Hello{
    public static void main(String[] args){
    System.out.println("Hello World");
    }
    }编译:javac -d . Hello.java打jar包:jar -cvfe hello.jar com.tarena.Hello com执行jar包:java -jar hello.jar,也可以在jdk的环境下双击jar包就可以启动里面的GUI,前提是启动GUI的类就是Main-Class说明:要想双击执行jar包,要指明Main-Class,命令行中的e参数就是指定Main-Class的,com表示把带包编译后com目录下的所有文件全部压缩到jar包中注:jar包和zip包都是压缩包,jar包里放的是*.class文件,不是*.java文件oK
      

  11.   

    如果用命令行就按照我说的做,Just do it之后就会发现oK了如果用IDE,各个IDE操作都没有太大的难度,关键是配置信息的时候指定Main-Class
      

  12.   


    这种方式不能吧第三方的jar打包进去,只能最为jar提供给项目使用。
    楼主的意思吧整个项目做成一个可执行的文件就像Windos中的.exe。
    前段时间做了个类似的东西
    一:利用批处理
        先利用fatjar吧项目达成jar包====》 项目.jar。指定jre运行项目.jar
        批处理内容如下:
        windows下:
        star jre路径/bin/java  -jar 项目.jar
        Linux下:
        jre路径/bin/java  -jar 项目.jar
        直接双击批处理文件就可以了。
    二:用exe4j吧项目做成可执行文件。
        网上有很多安装以及处理的方式楼主可以搜索下.
      

  13.   


    或者右键 导出--》java jar
      

  14.   

    用eclipse导出可执行的jar包就行了
      

  15.   

    用exe4j转换成.exe吧,想当初自己做了一个小游戏打成 .exe在换上漂亮图片真好看