比方说以下这个简单的窗口,如何将它变成一个可双击打开的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);
}
}
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
- java线程 从非常简单的说起谢谢 给点列子啊
- this指代对象,不能?
- java计算器的一个错误
- 奇怪,最简单的都报错
- 定义final int i = new int[2];之后树组维数无法改变,但内容可变,如何使内容也不可变
- 在Frame 中如何加入图片!!!
- 还有个小问题烦劳大家帮助,这次是关于流的,急。。。
- 我从java.sun.com下载了JavaMail,但是为什么没有javax.activation.*;????
- jbuilder4 中的jbutton大小改变的问题
- 大家能说一下JAVA最擅长的或者最适合做的事情是什么吗?
- 关于struts2的基本功能我都实现不了,不知道错在那
里面内容如下:
Manifest-Version: 1.0
Main-Class: houlei.csdn.util.StringResolution
其中:houlei.csdn.util.StringResolution是你的入口程序类,即带有main方法的类。
其它的不太清楚,能否请教一下命令行中应该输入什么?
eclipse工程的话直接用fat.jar插件打包
打包的时候注意自定义MANIFEST.MF
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)
不知道这么写对不对
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的版本
第一种情况:不带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
这种方式不能吧第三方的jar打包进去,只能最为jar提供给项目使用。
楼主的意思吧整个项目做成一个可执行的文件就像Windos中的.exe。
前段时间做了个类似的东西
一:利用批处理
先利用fatjar吧项目达成jar包====》 项目.jar。指定jre运行项目.jar
批处理内容如下:
windows下:
star jre路径/bin/java -jar 项目.jar
Linux下:
jre路径/bin/java -jar 项目.jar
直接双击批处理文件就可以了。
二:用exe4j吧项目做成可执行文件。
网上有很多安装以及处理的方式楼主可以搜索下.
或者右键 导出--》java jar