JDK环境变量详解
环境变量详解
JAVA_HOME
变量名:JAVA_HOME
变量值:C:\develop\Java\jdk1.8.0_191
⽤途:定义⼀个变量,供其他地⽅使⽤
Path
变量名:Path
变量值:%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;
⽤途:让系统在任何路径下都可以识别java、javac、javap等命令
CLASSPATH
变量名:CLASSPATH
变量值:.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar
⽤途:告诉jvm要使⽤或执⾏的class放在什么路径上,便于JVM加载class⽂件,.;表⽰当前路径,tools.jar和dt.jar为类库路径CLASSPATH详解
tools.jar
⼯具类库(编译和运⾏等),它跟我们程序中⽤到的基础类库没有关系。我们注意到在Path中变量值bin⽬录下的各个exe⼯具的⼤⼩都很⼩,⼀般都在27KB左右,这是因为它们实际上仅仅相当于是⼀层代码的包装,这些⼯具的实现所要⽤到的类库都在tools.jar中,⽤压缩软件打开tools.jar,你会发现有很多⽂件是和bin⽬录下的exe⼯具相对性的。当然,如果tools.jar的功能只有这些的话,那么我们根本不⽤把它加⼊到CLASSPATH变量中,因为bin⽬录下的⼯具⾃⼰可以完成对这些类库的调⽤,因此tools.jar应该还有其他的功能。
在⾥⾯还可以看到有Applet和RMI等相关的⽂件,因此tools.jar应该还是远程调⽤等必须的jar包。tools.jar的其他作⽤可以查看其他资料。
环境变量path误删有影响吗dt.jar
运⾏环境类库,主要是Swing包,这⼀点通过⽤压缩软件打开dt.jar也可以看到。如果在开发时候没有⽤到Swing包,那么可以不⽤将dt.jar添加到CLASSPATH变量中。
CLASSPATH中的类库是由Application ClassLoader或者我们⾃定义的类加载器来加载的,这⾥当然不能包括基础类库,如果包括基础类库的话,并⽤两个不同的⾃定义类加载器去加载该基础类,那它得到的该基础类就不是唯⼀的了,这样便不能保证Java类的安全性。
基本类库和扩展类库rt.jar
基本类库是所有的 import java.* 开头的类,在 %JAVA_HOME%\jre\lib ⽬录下(如其中的 rt.jar、resource.jar ),类加载机制提到,该⽬录下的类会由 Bootstrap ClassLoader ⾃动加载,并通过亲委派模型保证了基础类库只会被Bootstrap ClassLoader加载,这也就保证了基础类的唯⼀性。
扩展类库是所有的 import javax.* 开头的类,在 %JAVA_HOME%\jre\lib\ext ⽬录下,该⽬录下的类是由Extension ClassLoader ⾃动加载,不需要我们指定。
rt.jar 默认就在根ClassLoader的加载路径⾥⾯,放在CLASSPATH也是多此⼀举。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论