求教如何将一个Java程序打包成一个可双击执行的jar文件

时间:2023-02-22 07:50:03
比方说以下这个简单的窗口,如何将它变成一个可双击打开的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);
}
}

24 个解决方案

#2


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

#3


引用 1 楼 kebin0001 的回复:
http://world9918.blogspot.com/2009/06/java-jar.html

你给的链接有问题,我这边网页打不开

#4


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

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

#5


用eclipse吗?

file->export->java->runnable jar file

#6


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

#7


好像jdk6才可以。

#8


等正确答案 一样求解中

#9


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

#10


导出一下

#11


引用 5 楼 ft2920437 的回复:
用eclipse吗?

file->export->java->runnable jar file

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

#12


引用 9 楼 evangelionxb 的回复:
java -cvfm
eclipse工程的话直接用fat.jar插件打包
打包的时候注意自定义MANIFEST.MF

这个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)
不知道这么写对不对

#13


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的版本

#14


我来说说,就说怎么用命令行打可以执行的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

#15


这个我也不会。坐等

#16


14楼的答案我喜欢。。。。
   顶一下。。。。

#17


如果用命令行就按照我说的做,Just do it之后就会发现oK了

如果用IDE,各个IDE操作都没有太大的难度,关键是配置信息的时候指定Main-Class

#18


引用 11 楼 nbda1121440 的回复:
引用 5 楼 ft2920437 的回复:
用eclipse吗?

file->export->java->runnable jar file

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


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

#19


引用 5 楼 ft2920437 的回复:
用eclipse吗?

file->export->java->runnable jar file


俺们是这么做的,进了公司才知道的。呵呵

#20


引用 5 楼 ft2920437 的回复:
用eclipse吗?

file->export->java->runnable jar file

+1

#21


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

可否再详细……

只试过打包成jar包

#22


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


或者右键 导出--》java jar

#23


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

#24


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

#1


#2


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

#3


引用 1 楼 kebin0001 的回复:
http://world9918.blogspot.com/2009/06/java-jar.html

你给的链接有问题,我这边网页打不开

#4


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

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

#5


用eclipse吗?

file->export->java->runnable jar file

#6


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

#7


好像jdk6才可以。

#8


等正确答案 一样求解中

#9


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

#10


导出一下

#11


引用 5 楼 ft2920437 的回复:
用eclipse吗?

file->export->java->runnable jar file

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

#12


引用 9 楼 evangelionxb 的回复:
java -cvfm
eclipse工程的话直接用fat.jar插件打包
打包的时候注意自定义MANIFEST.MF

这个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)
不知道这么写对不对

#13


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的版本

#14


我来说说,就说怎么用命令行打可以执行的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

#15


这个我也不会。坐等

#16


14楼的答案我喜欢。。。。
   顶一下。。。。

#17


如果用命令行就按照我说的做,Just do it之后就会发现oK了

如果用IDE,各个IDE操作都没有太大的难度,关键是配置信息的时候指定Main-Class

#18


引用 11 楼 nbda1121440 的回复:
引用 5 楼 ft2920437 的回复:
用eclipse吗?

file->export->java->runnable jar file

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


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

#19


引用 5 楼 ft2920437 的回复:
用eclipse吗?

file->export->java->runnable jar file


俺们是这么做的,进了公司才知道的。呵呵

#20


引用 5 楼 ft2920437 的回复:
用eclipse吗?

file->export->java->runnable jar file

+1

#21


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

可否再详细……

只试过打包成jar包

#22


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


或者右键 导出--》java jar

#23


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

#24


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