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

周靖峰 2010-12-02 10:22:31
比方说以下这个简单的窗口,如何将它变成一个可双击打开的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);
}
}
...全文
606 24 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
小龙在线 2010-12-03
  • 打赏
  • 举报
回复
如果用命令行就按照我说的做,Just do it之后就会发现oK了

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

风影萧诺 2010-12-03
  • 打赏
  • 举报
回复
14楼的答案我喜欢。。。。
顶一下。。。。
至少空白很好 2010-12-03
  • 打赏
  • 举报
回复
这个我也不会。坐等
小龙在线 2010-12-03
  • 打赏
  • 举报
回复
我来说说,就说怎么用命令行打可以执行的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
wind1373290 2010-12-03
  • 打赏
  • 举报
回复
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的版本
周靖峰 2010-12-03
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 evangelionxb 的回复:]
java -cvfm
eclipse工程的话直接用fat.jar插件打包
打包的时候注意自定义MANIFEST.MF
[/Quote]
这个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)
不知道这么写对不对
周靖峰 2010-12-03
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 ft2920437 的回复:]
用eclipse吗?

file->export->java->runnable jar file
[/Quote]
原来Eclipse还有这个功能啊,谢谢了
Isnotsuitable 2010-12-03
  • 打赏
  • 举报
回复
导出一下
evangelionxb 2010-12-03
  • 打赏
  • 举报
回复
java -cvfm
eclipse工程的话直接用fat.jar插件打包
打包的时候注意自定义MANIFEST.MF
zcp1985 2010-12-03
  • 打赏
  • 举报
回复
等正确答案 一样求解中
licip 2010-12-03
  • 打赏
  • 举报
回复
好像jdk6才可以。
kenjun 2010-12-03
  • 打赏
  • 举报
回复
用netbeans 在项目里面添加main类。新建个项目,把这个类的名字改为main 运行-生成主项目,然后在控制台那里会显示jar文件保存的位置了
ft2920437 2010-12-03
  • 打赏
  • 举报
回复
用eclipse吗?

file->export->java->runnable jar file
aa805617894aa 2010-12-03
  • 打赏
  • 举报
回复
用exe4j转换成.exe吧,想当初自己做了一个小游戏打成 .exe在换上漂亮图片真好看
降龙 2010-12-03
  • 打赏
  • 举报
回复
用eclipse导出可执行的jar包就行了
水中影子 2010-12-03
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 preferme 的回复:]

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

或者右键 导出--》java jar
whlxjq520 2010-12-03
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 nbda1121440 的回复:]
引用 2 楼 preferme 的回复:
META-INF文件夹下面要有一个MANIFEST.MF文件。
里面内容如下:
Manifest-Version: 1.0
Main-Class: houlei.csdn.util.StringResolution
其中:houlei.csdn.util.StringResolution是你的入口程序类,即带有main方法的类。

可否再详细……
[/Quote]
只试过打包成jar包
valued_zero 2010-12-03
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 ft2920437 的回复:]
用eclipse吗?

file->export->java->runnable jar file
[/Quote]
+1
gujinf2008 2010-12-03
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 ft2920437 的回复:]
用eclipse吗?

file->export->java->runnable jar file
[/Quote]

俺们是这么做的,进了公司才知道的。呵呵
gudaobeige 2010-12-03
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 nbda1121440 的回复:]

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

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

原来Eclipse还有这个功能啊,谢谢了
[/Quote]

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

62,635

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧