生成可执行jar文件有多种方式,常见的方式是用Eclipse等IDE,当然,也可以用javac,jar这两个命令来打包。
在我这个示例中,我写了test.java与main.java两个源文件,main里引用了test里的run方法。
test.java:
import javax.swing.JFrame;
public class test{
public void run(){
JFrame jf = new JFrame("test");
jf.setSize(300,400);
jf.setVisible(true);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
main.java:
public class main{
public static void main(String[] args){
new test().run();
}
}
第一步,编译test.java,并打包成test.jar
第二步,编译main.java,并第一步打包成main.jar
参数classpath 是告诉javac,main.java引用了test.jar这个包
第三步,解开main.jar包,用指令 jar -xf main.jar
该指令生成了META-INF文件夹,在该文件夹下找到MANIFEST.MF
往MANIFEST.MF里加入两句:
class-path: ./test.jar (注意,有个点的。我在测试的时候,没了这个点会报错。嘿嘿,更多的测试交给各位去尝试咯)
main-class: main
如下图:
为什么要这么改,怎么这么改,得去问一下SUN公司,小弟实在不懂。。哈。
这里参考了一篇网文《终于会在dos下用jar命令制作可执行文件了》.
最后一步,第二次生成main.jar
将更改之后的MANIFEST.MF 复制到 main.jar 的所在目录下.如下图:
执行最后一个指令, jar -ufm main.jar MANIFEST.MF
这里会报错,但是无大碍
最后,执行jar文件可以用 java -jar main.jar
也可以双击执行,不过双击执行得有“系统默认执行方式”的支持。这个,我就不细说了。
以下一行是我个人留的笔记,就不用大家去理解咯:
[HKEY_CLASSES_ROOT\Applications\javaw.exe\shell\open\command]
@="\"C:\\Program Files (x86)\\Java\\jre6\\bin\\javaw.exe\" -jar \"%1\" %*"