分享
 
 
 

"package中的javac,java用法" && "制作可执行jar文件"

王朝java/jsp·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

java初学者最早会用的命令无非是就是javac和java,但即使这么简单命令也还会把我们弄得头皮发麻 -__- .

Roger下面就"package中的javac,java用法"和"制作可执行jar文件"做点简单的解释。

最基础的东西就不废话了,至于package先讲讲我的理解,因为我觉得知道这点对于开发还是很有帮助的。

举个例子说:有两个类Tom和Jerry同属于一个package--Partners

//Tom.java

package Partners;

public class Tom

{

public String toString()

{

return "It's Tom";

}

}

//Jerry.java

package Partners;

public class Jerry

{

public static void main(String[] args)

{

tom = new Tom();

System.out.println(tom + " and I am Jerry.");

}

}

下面Roger要编译它们为字节码了,@_@,可用如下命令:

Tom先,这很明显,而且必须:javac Tom.java 或 javac -d .\Partners Tom.java

(这里应该先设好path,如Roger机子上就是C:\j2sdk1.4.2\bin,因为javac.exe和java.exe都在这个目录下,

它们可是javac和java的源泉;同理classpath也要设好了,Roger的机子上是.,C:\j2sdk1.4.2\lib\dt.jar和

C:\j2sdk1.4.2\lib\tools.jar...,tools.jar是jar命令的源泉,不过除了.,其他两个都是默认的,不设也行;

如果有其他的东东也要设上去,如机子上装了tomcat就应该加上Tomcat 5.0\common\lib下的jar文件,

反正第三方类库都加上去,以便jvm找到着.如果用eclipse就要在eclipse里也设一下tomcat,这个以后在说吧.)

这两条命令的区别在于后者执行完后在当前目录下生成一个Partners文件夹,里面有生成的Tom.class.

-d 表示指定在哪个目录下生成class文件,即使写一长窜嵌套的之前没有的目录,命令执行完之后也

会生成的,这点不用担心的。至于前者执行完之后,还要人工创建一个Partners文件夹,并把Tom.class移进去。

为什么一定要这个Partners文件夹呢?这就看你对package的理解了。我们知道这里Tom的全称是Partners.Tom,

而jvm在处理它时把它转化为Partners\Tom或Partners/Tom(看不同的system了)。当你要运行它时,就应该

在Partners文件夹上一层目录用以下命令:java Partners.Tom。(在Partners目录下用这个命令不行的:

java Tom,不然会出现一个error说类名找不到,只有Partners\Tom这个类名)于是jvm会循着这个线索对目录

层层解析才能找到Tom.class并执行它.如果你的package更长点也一样,比如:com.blogdriver.bubbletea,

不信就试试吧.Jerry也是一样的道理.所有工作结束之后,我们有以下目录结构:

.

--Partners

--Tom.class

--Jerry.class

看到这里肯定有老兄会说为什么要这么复杂,干脆不要用package算了。package还是有很多好处的,主要是使

类之间的访问有了限制,便于控制和管理。举个例子,在develop和production版本之间进行控制就很有好处了,

当然如果你用eclipse之类的IDE的话,就用不着上面这么复杂了,按下Run按钮就行了。

下面要把它们打成可执行的jar文件.

先自己动手创建一个.mf文件,里面写"Main-Class: Partners.Jerry\n",之后的目录结构如下:

.

--Partners

--Tom.class

--Jerry.class

--MANIFEST.mf

MANIFEST相当于一个货单,里面存了诸如执行的主类是哪个等信息,取其他名字也行。

然后运行下面命令: jar cvfm test.jar MANIFEST.mf Partners

(至于cvfm是什么就看这个吧:jar -help,help很有用的啊)这其实是个压缩的过程.之后

就生成可执行的jar文件了,如果是applet之类的文件双击即可执行,而本例双击之后结果很快显现并消失了,

正常的人眼估计是看不到了,就用下面命令吧:java -jar test.jar.看到结果了吧.

下面Roger再给一个applet的例子,按照上面步骤弄一下,双击jar文件就可以看到很明显的结果了.

import javax.swing.*;

import java.awt.*;

public class myApplet extends JApplet {

public void init() {

getContentPane().add(new JLabel("Applet!"));

}

public static void main(String[] args) {

JApplet applet = new myApplet();

JFrame frame = new JFrame("Applet");

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

frame.getContentPane().add(applet);

frame.setSize(100,50);

applet.init();

applet.start();

frame.setVisible(true);

}

}

命令如下:

javac myapplet.java

jar cvfm test2.jar ANOTHERMF.mf myApplet.class

注意这样做一定要有main函数,有的applet没有的就自己加一个吧,跟上面的例子差不多,主要是JApplet.init()

和JApplet.start()方法.jar的其他用法就不用Roger说了吧,自己用-help看看就知道了.

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有