How?怎样设置Java环境变量?
JAVA_HOME
JDK安装目录
PATH
在PATH变量值的最前面添加:%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;
CLASSPATH
.;%JAVA_HOME\bin;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar
检查
cmd下分别输入以下验证命令:
java
javac
java -version
javac -version
Why?为何要设置Java环境变量?
JAVA_HOME环境变量作用
用JDK安装目录定义一个变量,供其他地方使用
PATH环境变量作用
指定命令搜索路径,在shell下面执行命令时,它会到PATH变量值所指定的路径中看是否能找到相应命令程序。我们需要把JDK安装目录下的bin目录加到现有的PATH变量值中,bin目录中包含常用的可执行文件,设置好PATH变量值后,操作系统在任何路径下就都能找到java/javac/javadoc/javap等常用命令了;
CLASSPATH环境变量作用
指定要执行的类的搜索路径(可包含多个),要使用已经编译好的类,前提当然是能够找到它们了,JVM就是通过CLASSPATH来寻找类的。我们需要把JDK安装目录下的lib子目录中的dt.jar/tools.jar设置到CLASSPATH变量值中,当然,当前目录.;也必须加入到CLASSPATH变量中。
CLASSPATH中的类库是由Application ClassLoader或者我们自定义的类加载器来加载的,这里当然不包括基础类库。如果包括基础类库的话,并且用两个不同的自定义类加载器去加载该基础类,那么得到的该基础类就不是唯一的了,这样便不能保证Java类的安全性。
Other
tools.jar作用
工具类(编译或运行等),根程序中用到的基础类没有关系。我们注意到在PATH变量值的JDK安装目录的bin目录下的各个exe工具大小都很小,一般都在27KB左右,这时因为他们实际仅仅相当于一层代码的包装,这些工具的实现所要用到的类库都在tools.jar中。用压缩软件打开tools.jar会发现很多文件和JDK的bin目录下的exe工具是相对应的。当然,如果tools.jar的功能只有这些,那么我们根本不用把它加入到CLASSPATH中,因为JDK的bin目录下的工具自己可以完成对这些类库的调用。因此,tools.jar应该还有其他的功能,在tools.jar里面还能看到Applet和RMI等相关文件。因此,tools.jar应该还是远程调用等必须的jar包。
dt.jar作用
运行环境类库,主要是Swing包,若开发时未用到Swing包,则可以不必将dt.jar添加到CLASSPATH变量值中。
基础类库
基础类库是所有的import java.*开头的类,在%JAVA_HOME%\jre\lib目录下(如其中的rt.jar/resource.jar),类加载机制提到该目录下的类会由Bootstrap ClassLoader自动加载,并通过亲委派模型来保证基础类库只会被Bootstrap ClassLoader加载一次,这样确保了基础类的唯一性。rt.jar默认就是在Bootstrap ClassLoader的根加载路径里面,放在CLASSPATH中也是多次一举。
扩展类库
扩展类库是所有的import javax.*开头的所有的类,%JAVA_HOME%\jre\lib\ext目录下,该目录下的类由Extension ClassLoader自动加载,不需要我们指定。