DOS下打jar包

来源:互联网 发布:php redis 单例模式 编辑:程序博客网 时间:2024/04/26 22:13

【前言】

学习JavaSE的那会做了几个小程序,都是自己在DOS下打包的,

时隔这久差不多都忘记了,

这几天又想做个小程序好歹想不起来怎么打包,

只能记得那会在DOS下打包的折磨,

折磨了好久才弄好,

今天再次尝试,终于又做好了,写篇文章备忘,

也希望对大家有帮助。

 

==================以下以JClock.java为例子

【生成class文件】

首先在DOS下找到JClock.java所在的文件夹下,

然后在DOS下输入进行编译:

javac JClock.java

见这个图片:

 

【编写.mf文件】

新建一个txt文档,写入如下内容,然后改名为haha.mf

Main-Class: JClock


需要注意的是:

Main-Class:之后一定要加一个空格!!
JClock就是main所在的类的类名!!

JClock之后要加回车!!

这三点缺一不可,缺少哪个都会错!!!!!

见下图:

 

【生成jar文件】

在DOS下输入如下命令即可生成可执行的jar文件

jar cvfm haha.jar haha.mf *.class


需要注意的:

jar cvfm其中jar就是打包jar的命令,而cvfm是相关参数,这些不用管!!

haha.jar是你想要生成的jar的名称!!

haha.mf是你前面写的mf文件!!

*.class意思是打包这个文件夹中的所有class文件!!

效果如下图:

 

 

【完成了!】

之后双击haha.jar只要你电脑上有JRE就可以运行了。

 

【补充】

若要打包本目录下某文件夹下的所有东西,例如本目录下的dd文件夹,输入如下命令:

jar cvfm haha.jar a.mf -C dd/ .


需要注意的:

jar cvfm haha.jar a.mf 都没有什么可说的,

 -C dd/ .   其中-C就是打包指定文件夹下的东西,记住就好, dd/是想要打包的文件夹 dd/之后加空格在写个点意思就是打包dd文件夹下所有的东西

效果如下图:

 

 

【JClock源码】

JClock是很久前写的一个小东西,还有很多待改进的地方,源码放到这,

供大家做打包jar的练习。

import java.awt.*;import java.util.*;import java.awt.event.*;public class JClock{Frame f = new Frame("JColock");Label l = new Label();Font fo1 = new Font("haha",Font.BOLD,80);Panel p2 = new Panel();Font fo2 = new Font("haha",Font.PLAIN,20);Button b1 = new Button("再睡一会");TextField tf = new TextField(12);Button b = new Button("ok");Button bb = new Button("new");Button b2 = new Button("起床啦");boolean b2b = true;boolean b1b = false;boolean br = false;String res = "";public JClock(){f.setSize(400,200);f.setLocation(500,200);f.setVisible(true);f.setResizable(false);f.add(l,BorderLayout.CENTER);f.add(p2,BorderLayout.SOUTH);l.setFont(fo1);l.setAlignment(Label.CENTER);p2.setLayout(new FlowLayout(FlowLayout.CENTER,10,5));p2.add(b1);p2.add(tf);p2.add(b);p2.add(bb);p2.add(b2);b1.setFont(fo2);b2.setFont(fo2);b.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e){res = tf.getText();tf.setEditable(false);b2b = true;}});bb.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e){res = "";tf.setEditable(true);br = false;}});b2.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e){b2b = false;}});b1.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e){b1b = true;}});f.addWindowListener(new WindowAdapter(){public void windowClosing(WindowEvent e){System.exit(1);}});ClockThread ct = new ClockThread();ct.start();}public static void main(String[] args){JClock jc = new JClock();}class ClockThread extends Thread{public void run(){int n = 50;try {while(true){Calendar cal = Calendar.getInstance();String s = "";String r = "";boolean bbb = false;if (n%5000 == 0){bbb = false;n += 50;}else{bbb = true;}if(cal.get(cal.HOUR_OF_DAY) < 10){s = "0" + cal.get(cal.HOUR_OF_DAY) + ":" + cal.get(cal.MINUTE) + ":" + cal.get(cal.SECOND);r = "0" + cal.get(cal.HOUR_OF_DAY) + ":" + cal.get(cal.MINUTE);}else if(cal.get(cal.MINUTE) < 10){s = "" + cal.get(cal.HOUR_OF_DAY) + ":0" + cal.get(cal.MINUTE) + ":" + cal.get(cal.SECOND);r = "" + cal.get(cal.HOUR_OF_DAY) + ":0" + cal.get(cal.MINUTE);}else if(cal.get(cal.SECOND)< 10){s = "" + cal.get(cal.HOUR_OF_DAY) + ":" + cal.get(cal.MINUTE) + ":0" + cal.get(cal.SECOND);r = "" + cal.get(cal.HOUR_OF_DAY) + ":" + cal.get(cal.MINUTE);}else{s = "" + cal.get(cal.HOUR_OF_DAY) + ":" + cal.get(cal.MINUTE) + ":" + cal.get(cal.SECOND);r = "" + cal.get(cal.HOUR_OF_DAY) + ":" + cal.get(cal.MINUTE);}if (r.equals(res)){br = true;}l.setText(s);Thread.sleep(50);if (br && b2b){if (b1b && bbb){n += 50;continue;}b1b = false;int a = (int)(Math.random()*255)+1;int b = (int)(Math.random()*255)+1;int c = (int)(Math.random()*255)+1;l.setBackground(new Color(a%255,b%255,c%255));}else{l.setBackground(Color.white);}}} catch (InterruptedException e){e.printStackTrace();}}}}


 

原创粉丝点击