摘要:记得初学java的时候,老师布置的第一个作业是用记事本写一段java程序,输出“Hello World”文字。当时费了半天劲才搞出来(天资愚笨),现在回想起来主要还是对java、javac命令及环境变量PATH、CLASSPATH不熟悉导致。现在开发java程序都用IDE工具,大多会忽略这方面的知识,一般都是配置好环境程序能运行就ok。目前jdk1.5之后的版本在安装时不用设置CLASSPATH变量,jdk1.8安装时会默认配置PATH变量。
一.PATH是什么?
1. PATH用来设置可执行文件(如:.COM、.EXE、.BAT)的搜索路径。为什么我们在DOS命令窗口任意目录下输入命令:java -version 命令被正确执行,就是因为我们配置了java的PATH环境变量,而且PATH指向了jdk安装目录下的bin目录。反之则要cd到bin目录下才可正确执行java -version命令。
2. PATH命令中的路径,超过一个以上,windows下各路径之间以一个分号“;”分割,linux下以冒号":"分隔。
二.CLASSPATH是什么?
CLASSPATH就是存放.class文件的路径,编译运行Java程序时,JRE会去该变量指定的路径中搜索所需的类(.class)文件。什么时候会用到classpath参数呢?主要用在javac和java命令中。
javac编译:如果当前你要编译的java文件中引用了其它的类,但该引用类的.class文件不在当前目录下,这种情况下就需要在javac命令后面加上-classpath参数。如我在目录:D:studysrcest 目录下新建Test.java文件,在D:studysrcuser目录下新建User.java文件,在Test.java文件中引入User类,代码如下:
package test;import user.User;public class Test { public static void main(String[] args) { User user=new User(); user.setName("zhang san"); user.setAge(12); System.out.println(user); }}
1、执行命令:javac d:studysrcestTest.java 或cd 到test目录下执行javac Test.java,提示“程序包user不存在”如图:
2、执行命令:javac -classpath d:studysrc d:studysrcestTest.java 或者cd到test目录下执行javac -classpath d:studysrc Test.java(注意:classpath指定的路径是 d:studysrc 而不是 d:studysrcuser) 。可以看到javac命令被正确执行。如图:
这时我们的目录下分别生成了User.class,Test.class文件,接下下来我们就可以执行java命令查看输出结果了。
java运行:
1、cd到目录d:studysrcTest下执行命令:java Test 提示:“找不到或无法加载主类 Test”,如图:
2、java命令加上classpath参数,执行命令:java -classpath ../ test.Test,../表示上级目录,这里上级目录指的是src目录,所以在test目录下执行:java -classpath ../ test.Test 等同于在src(test的上级)目录下执行:java test.Test,执行命令的结果如图:
小结:PATH用来设置可执行文件(如:.COM、.EXE、.BAT)的搜索路径,先在当前目录找执行程序,如果没有,再到path指定目录中去寻找。CLASSPATH就是存放.class文件的路径,当你要编译或执行的类import了其它的类,但被import类的.class文件不在当前目录下时,就需要通过-classpath来找到该类。