一般都按如下配置,步骤:计算机->属性->高级系统设置->高级->环境变量->系统变量,新建2个变量(JAVA_HOME,CLASSPATH),追加一个变量的值(Path)
JAVA_HOME D:\Program Files\Java\jdk1.7.0_67 (jdk的安装目录)
Path %JAVA_HOME%\bin (这个是追加,要保留原有的值)
CLASSPATH .;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar
Path 配置Path,则可以在dos下任何文件夹下执行javac等命令,如果不配置,则只能在jdk的bin目录下才能执行这些命令
当你在dos里输入某个命令时,,操作系统会在当前目录和Path变量目录里查找命令
JAVA_HOME java的jdk目录,一些第三方类库,如maven等,会用到JAVA_HOME变量,若不配置,则mvn -v (查看maven版本命令)则不能正常执行
CLASSPATH 一定要注意前面的那个点.代表当前路径,分号隔开,代表有多个路径
若不配置classpath变量,则jvm默认会在当前路径下查找class文件,所以不配置,java程序一般照常运行。
若配置classpath变量,则jvm会在classpath下查找class文件,不再取默认的当前路径查找,所以手动配置,必须加上前面的.
举个简单的例子。
在d盘根目录下写个Hello.java,
d:\>javac Hello.java
执行编译后,则在当前目录生成Hello.class文件
d:\>java Hello
则正常运行,现在将classpath变量改成d,代表d盘
则在e盘也可以执行java Hello,因为程序会在classpath下查找Hello.class文件,而classpath的值是d盘根目录,所以可以找到
同样,在e盘根目录下写个Hello2.java,编译后默认在e盘生成Hello2.class,执行
e:\>java Hello2
则会显示 错误:找不到或无法加载主类Hello2
因为程序会在classpath下查找class文件,d盘下搜索不到Hello2.class文件,所以报错;若classpath下有个.,则可以正常运行了
若不配置classpath,则默认都在当前目录查找class文件,各自在自己的目录下执行class文件,不会有任何异常
dt.jar,tools.jar,一般开发中可能很少使用到,所以一般不配置,也没有任何影响。
classpath里面的class都是由App ClassLoader和Custom ClassLoader来加载的,而我们平时用的import的那些基础类库和扩展类库,是由BootStrap ClassLoader和Extension ClassLoader来加载的,所以dt.jar,tools.jar不配置在classpath下,一般的开发是不影响的。