classpath是java虚拟机能够自动识别的变量名称,默认在不设置的状态下,到命令行执行所在目录寻找Class文件:
例子
C:\Documents and Settings\Administrator>d:
D:\>cd java
D:\java>javac WebServer.java
D:\java>java WebServer
在D盘目录下执行成功。
把生成好的Class文件直接拷贝到C盘的一个目录下,切换到C盘该目录(注意一定要有这一步!),直接用java命令执行:
D:\java>c:
C:\Documents and Settings\Administrator>cd My Documents
C:\Documents and Settings\Administrator\My Documents>java WebServer
C:\Documents and Settings\Administrator\My Documents>
执行成功。
切换到E盘下再次执行:
C:\Documents and Settings\Administrator\My Documents>e:
E:\>java WebServer
错误: 找不到或无法加载主类 WebServer
说明JAVA虚拟机是自动在命令执行所在目录寻找Class文件的。
set classpath:临时配置
继续上面的操作环境。
在E盘下直接set classpath到D盘Class文件所在目录:
E:\>set classpath
环境变量 classpath 没有定义
E:\>set classpath=D:\java
E:\>java WebServer
执行成功。
说明java虚拟机寻找可执行文件时是先找环境变量classpath,再找当前路径!注意:
加分号和不加分号的区别:set classpath=D:\java(不加分号)---------->只找classpath,不再找当前路径
set classpath=D:\java;(加分号)----------->先找classpath,如果classpath中找不到,找当前路径(在这种情况下,如果classpath中没有此Class文件而当前目录下有,一样可以执行!)
实际环境中:不要加分号!要保证命令执行和结果的唯一性。(有些需求下可以配置多路径,中间用分号相隔。但即使配置多路径,最后一个路径后如果有分号,那么也会自动加上一个当前目录,所以不要在最后加分号!)
(注:想在当前路径下找一次就用set classpath=.;D:\java;E:\这种形式,这样无论切换到哪个当前路径,都在当前路径下找一次)
(注:path的寻找顺序和classpath正好相反:先在当前目录下找,找不到再到环境变量中去找。临时添加方法:set path=D:\java;%path%------>新的加上原来的)