上午温习了一下javac 和java命令,下午索性继续再看看打包成jar的命令吧。首先声明我这只是一种实现的方法而不是详细介绍大全。
考虑这种情况有两个类一个是MyApplet.java如下
package my.applet; import javax.swing.*; import java.awt.*; import my.friends.Joeytang; public class MyApplet extends JApplet { public void init() { getContentPane().add(new JLabel("Applet!")); }
public static void main(String[] args) { JApplet applet = new MyApplet(); Joeytang joey = new Joeytang(); JFrame frame = new JFrame("Title:"+joey);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.getContentPane().add(applet); frame.setSize(100,50); applet.init(); applet.start(); frame.setVisible(true); } }
一个是Joeytang.java文件
package my.friends; public class Joeytang { public String toString(){ return "Joey"; }
在MyApplet中引用了Joeytang类,同时这两个类不在同一个包里面。
当分别编译完以后,在当前的目录下面会有my/friends/Joeytang.class和my/applet/MyApplet.class两个路径文件了。现在需要创建一个后缀mf文件名字可以随便起,这里我们起名为MYAPPLET.MF,这个mf文件内容中输入
“Main-Class: my.applet.MyApplet”然后回车。注意输入完刚才内容后要回车。这个文件的意思是告诉以后的jar文件执行的时候,去找那个类作为主程序。
好了万事俱备,下面在命令行输入jar cvfm test.jar my/applet/MANIFEST.mf my/applet/MyApplet.class my/friends/Joeytang.class这个里面需要注意的是mf文件test.jar文件会直接生成在当前文件夹下,这个名称是自定义的就是生成的jar的文件名称,其中mf文件我是放在my/applet/文件夹下,因此需要那个路径,如果你是放在当前文件夹下,就不用加任何路径直接书mf文件名就行了。后面的my/applet/MyApplet.class my/friends/Joeytang.class,是把所有用到的类都包含进来,否则不能运行。ok了,命令运行完以后就可以看到test.jar在当前文件夹下了。右键该jar文件,选择使用jvm的方式Java(tm) Platform...运行,就可以看到运行结果了。
下面再注意一下,我现在生成的jar文件的主程序是一个applt所以会出现窗口,如果你做的只是一个打印输出之类的操作,运行jar后是看不到任何反应的。要想看到结果可以通过使用java -jar test.jar命令来运行test.jar文件,从而在命令行可以看到输出的结果。 }