用例子解释:如何设置CLASSPATH(Java)

来源:互联网 发布:植物大战僵尸源码 编辑:程序博客网 时间:2024/05/29 08:33

设置CLASSPATH的目的是让Java执行环境找到指定的Java程序(也就是.class文件)

 

Java程序如何找到并引用所需要的类?

 

1.利用环境变量CLASSPATH。CLASSPATH中定义了很多根目录。运行程序时Java解释器只从这些根目录开始查找一个Java程序用到的类,即根目录和import指出的子目录 。例如,需要从当前目录查找,则需要加入"."。


2.可以把包中的所有.class文件打包为一个jar文件,然后在CLASSPATH中加入该文件的路径。


关于打包:

例如我现在C:\myproj\classes\X\Y下有A.class和B.class,我要打包(内部包含子目录信息)成food.jar

就要这样写:


这样,food.jar就会生成在C:\myproj\classes\下

当java程序中要用到A类的时候可以import X.Y.A

CLASSPATH的设置就是C:\myproj\classes\food.jar


3.可以在编译和运行时加入classpath参数指出所需要的包和根目录:

C:>javac -classpath c:\java\PackJar\food.jar;c:\java;. PackJar.java 

C:>java -classpath c:\java\PackJar\food.jar; c:\java;. PackJar


Window8下CLASSPATH的设置方法:右键计算机,点击属性,出现如下界面。

 

点击左边的高级系统设置



选择高级



点击右下角的环境变量

在系统变量那里找到CLASSPATH

 点击编辑



我的CLASSPATH变量值设置为

.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;%JAVA_HOME%\jre\lib\rt.jar;C:\myproj\classes;

最前面的是.;

这个的意思是告诉Java程序找类时要先查找当前目录的.class文件


那么当前目录是指什么?

还是用一个具体的例子来说明吧!

例如我现在在C:\myproj\bin下有一个Test.java文件

内容如下:



编译:



以上例子中当前目录就是C:\myproj\bin

可以看到Test.java用到了我自己定义的类A,那它是怎么找到类A的呢?

因为我的环境变量设置了.;

所以会到当前目录找,也就是看C:\myproj\bin目录下有没有直接有一个A.class。

我的A.class没有放在那个目录下,所以必定是没有的。

然后它还会去找,看看是不是系统类等等。

也必定不是。

最后可以看到我还设置了一个路径C:\myproj\classes;

所以会到C:\myproj\classes下看有没有A.class,这时候就找到了A.class。

其实A.class的路径是C:\myproj\classes\X\Y\A.class

找到的原因是我在Test.java里写了import X.Y.*,(导入该目录下的所有类)这个和CLASSPATH的根目录C:\myproj\classes;合起来就可以找到类A了。

另外,也可以写成import X.Y.A


感谢所有让我明白CLASSPATH的你们

1 0