配置java环境变量和使用命令编译运行java文件的一些细节

最近设置安装java环境变量到差点怀疑人生了,就是一个标点符号“.”没加的问题,帧是。。。

查了很多资料,说是CLASSPATH设置\dt.jar 和 \tools.jar 路径(编译运行java程序需要在JDK路径的lib文件夹中的这两个.jar文件里面的java类)的时候,加“.”的原因是“.”代表当前路径,用以强制Java解释器在当前路径搜索Java类。)

但其实JDK在1.4以前版本都是需要设置CLASSPATH环境变量的,后来Sun改进了JDK的设计,JRE会自动搜索当前路径下的类文件,而且使用Java编译和运行工具时,系统可以自动加载dt.jar和tools.jar文件中的java类,因此可以不需要设置CLASSPATH了。

如果你闲的无聊,也想设置CLASSPATH环境变量,则JRE会按该环境变量指定的路径来搜索java类(JRE中的JVM要寻找字节码文件,也就是.class类文件)。这也就意味着,如果CLASSPATH环境变量中不包括一点".",也就是没有包含当前路径,JRE不会在当前路径搜索java类。

在设置环境变量会出现用户变量和系统变量两个概念。它们并没有太大的差别。只是用户变量只对当前的用户有效,而系统变量对所有用户有效。而如果Path系统变量和PATH用户变量都同时含有了java命令的路径,此时会优先执行Path系统变量路径里面包含的java命令。

注意:Windows操作系统会根据Path环境变量来查找命令。如果查找不到,则会显示“XXX 不是内部或外部命令,也不是可运行的程序或批处理文件”。因为windows不区分大小写,所以设置PATH和Path是一样的。


最近在玩cmd窗口使用命令java或javac编译Java文件。

发现了一个很有意思的现象:

比如我的一个array.java文件路径是:D:\eclipse workplace\myjava\src\myjava\array.java

现在假设D:\eclipse workplace\myjava\src\myjava文件夹中只有.java文件;

现在在cmd窗口下运行java文件。

下面如图进入每层文件夹:

配置java环境变量和使用命令编译运行java文件的一些细节_第1张图片

最后的命令行:  javac array.java   运行后

在D:\eclipse workplace\myjava\src\myjava  文件夹中就出现了array.class类文件

此时再运行 :  java array 则会出现问题,编译不了 array.java源文件

配置java环境变量和使用命令编译运行java文件的一些细节_第2张图片

那么如何编译array.java源文件呢?

此时应该退出最后的myjava文件夹,进入前一层文件夹src

再输入:  java myjava.array就可以编译了。

配置java环境变量和使用命令编译运行java文件的一些细节_第3张图片

如果D:\eclipse workplace\myjava\src\myjava下只有.java文件,然后直接在src文件夹中java myjava.array是会报错的,因为还没有.class文件。

也就是说,假如有A.java文件处于com.bag包下,则需要在bag文件夹下使用javac A.java命令;假设com文件夹处于src文件夹之下,则需要在src文件夹下使用java com.bag.A就可以了。

此外进入bag文件夹中可以使用del *.class命令清楚所有.class文件,使用dir *.class可以查看所有的.class文件信息。

你可能感兴趣的:(java学习笔记)