Java和javac这两个SUN公司的路盲
我们先在网上下载了一个sun公司的jdk包,假如我们把它个压缩包放到D盘下,其目录名为:D:/JDK1.4。
安装好了,在jdk下会有以上几个目录,可能版本不同,会有一点差异的,这是没关系的。我再在D盘建一个属于我们编程序的目录: D:/myprogram,我们写的程序都放到这里来。我们先写一个程序,最经典的向世界问候!这个程序准确的说应该不是我写的,我还写不出来这么经典的程序来!呵呵!
它的文件是hello.java,请注意我的文件名及定义的类名都是小写的hello,我讨厌大写小混写,容易输错的!
用记事本进行编辑,保存为java后缀即可!
public class hello
{
public static void main(String args[])
{
System.out.println(\"Hello the world!\");
}
}
好了,这个文件保存目录为D:/myprogram/hello.java。让我们进入MS DOS下,让当前路径为D:/myprogram目录下,首先用一个path命令查看一下Windows定义的所谓的搜索路径,然后用一个命令path ;取消所有搜索路径。
好了,大家都是知道,现在你如果键入java或是javac是会提示找不到该命令的,不信你试吧!
我想你可能觉得这个错误很好解决的!么样解决,你设一个搜索路径到D:/JDK1.4/BIN就可以了!
哈哈!能编译和执行我们自己写的程序啦!本章的学习到此结束了!同学们,下节课见呀!
这可能是大多数老师对他们的学生讲的java开门必修课吧!我想这些学生也就从此开始了自己的java之旅了吧!
好了!老师们的课讲完了,我还是要继续的,有兴趣朋友请继续听下去呀!话说清政府统冶中国的时候,买了许多的洋枪洋炮,但花了哪么多白花花的银子就是没能打几个胜仗呀!为什么呀?洋枪洋炮到咱们手中怎么这样不管用了呀!这里有一个秘密,就是这些洋枪洋炮到了咱们中国人手里,十炮打出去,只能响一两炮呀!洋人的东西不好使呀!吃亏呀!大家都是拿来一套东西就用的,好吧!试试这个Java的洋玩意!
以下我们还是把搜索路径设置为空,删除我们已经编译好hello.class文件,开始我们的拿来主义思维方式,把目录D:/JDK1.4下我们要用的到文件拷贝我们的D:/myprogram目录下吧!你不会告诉我你把整个目录都拷贝过来呀!用不了哪么多的,让我把我知道要用的着文件拷贝过来
试试以下是我拷贝过来的几个文件情况!
下图是我整理后的D:/myprogram目录,其中包括: JRE子目录,不用多说了,这是Java虚拟机所在的目录;LIB目录是一个Java公司提供的基础类库文件目录;xiaodajin的目录,这才我们编写的程序所放的位置。
首先,让我们看D:/myprogram/xiaodajin目录下有哪些文件,我在下面还把我们要用到的两个可执行文件,准确的应该说是Java写的一个程序吧!
再看看D:/myprogram/lib目录下的文件,我只保留了一个tools文件,这个文件有什么作用呀?听说javac执行时,就是找这个文件,如果找不到的话,它就执行不了的。
以下是D:/myprogram/jre目录。其bin目录是Java虚拟机文件的所在地,都是些DLL后缀的文件;其lib目录包括一些压缩的类库文件和一些Java虚拟机的配置文件。
以下就是D:/myprogram/jre/bin目录下的所有文件。
这是D:/myprogram/jre/bin/CLIENT目录。
这是D:/myprogram/jre/bin/SERVER目录。
这是D:/myprogram/jre/LIB目录下的文件。
这是D:/myprogram/jre/LIB/I386目录。
以上就是我的这一个程序所需要的文件及目录情况,好了,它们都会对应在你的jdk目录下的哪些对应目录下的文件,我只不过是照搬过来而已,但我进行许多的精简。
好了,建好以上目录可能要花去一些时间的!好了,建好后可以休息几分钟的!
休息好了,再我们就开始往下看。首先进入进入MS DOS下,并进入到D:/myprogram/xiaodajin目录下,在此特别声明的是:我们是在关掉windows的path搜索路径的条件下开始我们讨论,你可以用以下命令,而且你每次进入到MS DOS下,最好都给我输入一遍的。
每次进入MS DOS下,都要按我步骤进行操作,请相信这样做是不会修改你的path系统设置的,仅在当前MS DOS下进行路径的取消。
好了,进入MS DOS下的D:/myprogram/xiaodajin目录下进行编译和执行我们的hello程序,一切OK!
现在提出第一个问题:
在D:/myprogram/xiaodajin目录下的几个程序文件位置是否固定呢?
我们先把D:/myprogram/xiaodajin目录下文件进行大搬家,就直接放到D:/myprogram目录下看看吧!
以下就是D:/myprogram目录下的几个文件情况。
拷贝文件完成后,还是进入到MS DOS下,现在让我们进入D:/myprogram目录下,编译和执行我们的程序。
哈哈!不想发生的事情还是发生了!我们的程序根本就编译不过去呀!这是为什么呀?
明明在我这根目录下都有需要的文件,为什么javac命令就是眼瞎呀!近在眼前也没看到呀!但是为什么在这个目录D:/myprogram/xiaodajin下的java就能找到所需要的文件呀???
Javac或是java命令,原来它们只跟同一级或是跟自己高一级的人打交道,从来不跟比自己低一级的打交道,我算是领教了美国的人生活方式啦!从Javac或是java命令的执行方式就可以看出来的!呵呵!
现在提出第二个问题:
如果在D:/myprogram目录直接存放所有需要文件,不建立任何的文件夹,就
这样堆在一起,我们程序还能运行吗?
从一般人的使用的思想来看,放在同一个文件夹下的程序文件,它们应该可以相互调用,是应该没问题的!
你可以做几个批处理文件相互调用试一下,应该没问题的!
做一个实验,我们把D:/myprogram/jre/LIB目录下的文件rt.jar文件剪切到D:/myprogram/xiaodajin目录下!
注意:此时D:/myprogram/jre/LIB不存在了这个rt.jar文件。
文件拷贝完成后,我们还是进入到MS DOS下,进入到D:/myprogram/xiaodajin目录下,重新进行对我们的程序进行编译。
哈哈!看来java或是javac命令它们确定也够路盲的啦!在它跟前它都看不见呀!
现在提出第三个问题:
如果我们把D:/myprogram/jre这个目录的文件名改为D:/myprogram/jre1,程序
能否正常被编译或是执行呀?
注意:先把上面的D:/myprogram/xiaodajin目录下rt.jar文件拷贝回到D:/myprogram/jre/LIB目录下呀!让我们程序恢复到可以执行的状态下。
以下是把D:/myprogram/jre目录改成了D:/myprogram/jre1。
文件夹修改完成后,我们还是进入到MS DOS下,进入到D:/myprogram/xiaodajin目录下,重新进行对我们的程序进行编译会出现什么情况呢?
以上的提示还是因为没有找到JRE运行时的文件。总结一下,其实文件夹相当于文件名,java或javac对自己运行时所需要的文件,这些所需要的文件其实都是些固定为一个相对于你当前目录一个带文件夹路径的文件。
问题小结:java和javac是两个路盲呀!如果想要让它们运行的话,必须按我上面的文件组织方法进行存放。究其原因,因为它们都是用java语言编写的,他们的运行是需要JRE这个文件。
附注说明:
统计一下,D:/myprogram整个目录为43M空间,其中D:/myprogram/jre下文件有38.1M空间
呀!另外D:/myprogram/jre/LIB子目录占30.5M。其实我的两个程序文件hello.java和hello.class
一共只有2K大小的。
而SUN目录D:/JDK1.4/JRE有48.5M,而D:/JDK1.4/LIB目录有42.5M。
- 上一篇: java和c++比较(1)--虚函数和指针
- 下一篇: java 文件操作大全