【JDK配置原创】JDK(JRE)环境变量配置原理 --费元星
已经配置了很多次jdk了,每次都是安装网上的教程配的,今天突然想了解了解原理了,整理一下!
参考贴(
http://blog.csdn.net/wkupaochuan/article/details/7462180(讲解的不全)
http://jingyan.baidu.com/article/bea41d435bc695b4c41be648.html(百度经验,里面有详细的配置过程,后面我就不说了)
)
通常在安装JDK过后需要配置两个环境变量:PATH和CLASSPATH(由于windows平台对系统变量的大小写没有要求,所以大小写都可以,但是Linux系统中只能用大写)。
也许有人说还有一个JAVA_HOME, 其实这个变量的设置就是起到中转的作用吧,JAVA_HOME指向我们的JDK安装目录,自定义这个变量的目的大概是让我们比较方便的使用JDK安装目录吧(个人理解),所以JAVA_HOME可有可无。
要讲PATH和CLASSPATH这两个系统变量,就得先看一下JDK的根目录下面的几个文件夹了:

其中主要的就是bin、jre、lib三个文件夹了,
bin:该路径下存放了JDK的各种工具命令,常用 的有javac、java等;
jre:该路径下安装的就是运行java程序所必须的JRE环境;
lib:该路径下存放的是JDK工具 命令的实际执行代码程序,该文件夹下的dt.jar 和tools.jar是工具命令的类文件(.class);
下面我们就来讲一下PATH和CLASSPATH这两个系统变量:
首先编译和运行java程序需要两步骤:
1、将.java源文件编译成.class字节码;
2、解释执行与平台无关的字节码程序;
这两步分别用到javac 和java这两个命令。
当我们运行这两个命令的时候,计算机是如何找到这两个命令的呢?也就是如何找到这两个命令的路径的?所以我们就要为这样的工具命令设置路径,让计算机能够自己找到他们。windows操作系统都是根据系统变量PATH来查找命令的,所以我们就将工具命令(bin目录)的路径加到path路径上面,计算机就能找到了(将D:\Java\jdk1.7.0_01\bin加入到path环境变量中):

环境变量中不同路径之间用分号隔开,Linux下面用冒号隔开。
这样的话在dos环境里面运行java、javac等工具命令时,计算机就能自动找到命令所在路径并执行了。
接下来计算机根据path里面的路径找到命令了,但是这个路径(也就是bin目录)存放的是工具命令的一个引用(快捷方式吧),具体的工具命令程序是保存在lib目录下的,所以这个时候计算机单单找到工具命令还不行,还要找到它的执行体,而这个执行体都是一些java的经过编译后的.class文件(lib目录下的dt.jar和tools.jar),所以我们要设置一个环境变量,将这两个文件(即类包dt.jar和tools.jar)路径放到 环境变量中,以便于计算机能找到执行。
而对于类文件,java设置了一个环境变量CLASSPATH专门来指向类文件,计算机根据这个环境变量下面的路径,就能找到相对应的类文件并执行了。所以jdk安装后,要把D:\Java\jdk1.7.0_01\lib\dt.jar;D:\Java\jdk1.7.0_01\lib\tools.jar两个路径加入到CLASSPATH中。
而我们通常设置的CLASSPATH路径前面还有一个点,即完整的CLASSPATH是 .;D:\Java\jdk1.7.0_01\lib\dt.jar;D:\Java\jdk1.7.0_01\lib\tools.jar
这个点是用来干什么的呢?(假设有一个已经编译好了的java文件Hello.class)
我们执行这个文件 java Hello 这个时候JRE是到哪里搜索这个文件呢?可能有人说当前路径下搜索啊!这是对的,是在当前路径下搜索,但是JDK1.4及之前的版本没有设计这个功能,这意味着即使当前路径包含着Hello.class这个文件,在执行 java Hello 这个命令时,系统也找不到Hello这个类。
所以在JDK1.4及之前的版本中需要在ClassPATH环境变量中添加一个点(.),用来告诉JRE需要在当前路径下搜索JAVA类。所以CLASSPATH也就有了上面的路径 (.;D:\Java\jdk1.7.0_01\lib\dt.jar;D:\Java\jdk1.7.0_01\lib\tools.jar)。
总之,classPATH这个环境变量就是用来寻找类的。把相应的类路径添加进去,系统就能自动检索到并执行。
在JDK1.5及之后发布的版本中,可以不用设置CLASSPATH这个环境变量了,因为JRE比以前更智能了,它会自动搜索当前路径下的类文件,而且在使用java的编译和运行工具时,系统也可以自动加载dt.jar和tools.jar文件中的java类,因此不再需要设置CLASSPATH环境变量。
但是当我们使用JDK1.5及之后发布的版本时,如果设置了CLASSPATH这个环境变量,JRE将会按照CLASSPATH环境变量指定的路径来搜索java类,而不会自动寻找java类的,所以要自己设置CLASSPATH的话,一定要设置正确,不然运行不了!
【JDK配置原创】JDK(JRE)环境变量配置原理 --费元星的更多相关文章
- jdk、jre环境变量配置
1 jdk和jre的区别: (jdk:Java 开发工具包) (jre:Java 的运行环境) 只需这么记就可以了,想深入了解得自行查询相关资料 2 jdk是包含jre的,所以只需下载jdk. 官方网 ...
- Windows10系统下Java JDK下载、安装与环境变量配置(全网最全步骤)
1.首先要明确: JDK.JRE.JVM的含义 2.下载目前最新的JDK:Java SE Development Kit 17,传送门::https://www.oracle.com/java/tec ...
- linux下JDK,tomcat的安装与环境变量配置
先从网上下载jdk(jdk-1_5_0_02-linux-i586.rpm) ,下载后放在/home目录中,当然其它地方也行. 进入安装目录#cd /home#cp jdk-1_5_0_02-linu ...
- JDK、Jmeter、Android环境变量配置
JDK环境变量 1.在系统变量里点击新建,变量名填写JAVA_HOME,变量值填写JDK的安装路径,在这里就填写"D:\Program Files\Java\jdk1.6.0_26" ...
- jdk、maven、tomcat环境变量配置
1.jdk 新建环境变量: JAVA_HOME:C:\Program Files\Java\jdk1.8.0_91 CLASSPATH:.;%JAVA_HOME%\lib;%JAVA_HOME%\li ...
- CentOS下JRE环境变量配置
很多时候,我们需要在CentOS上部署tomcat,从而搭建web服务器,然JDK/JRE环境是前提,这里就记录一下,在后面的时候直接使用. 下载jre-7u80-linux-x64.tar.gz,并 ...
- 安装JDK详细步骤,以及环境变量配置
1.JDK 1)下载:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 点击同意, ...
- JDK的安装和Java环境变量配置
所需工具:JDK 下载地址:http://www.oracle.com/technetwork/java/javase/downloads/index.html
- Java JDK下载、安装与环境变量配置
https://blog.csdn.net/siwuxie095/article/details/53386227 https://blog.csdn.net/liudongdong19/articl ...
随机推荐
- JQuery datatables 标题和内容居中显示
1.如题,使用到了强大的表格插件datatables,要使标题和内容都居中显示,只需要在jsp引入css,写上如下内容即可: /*qiulinhe:2016年11月7日13:48:26*/ /* da ...
- 网络体系结构的概念 - 网络协议TCP - 红黑联盟
https://i.cnblogs.com/EditPosts.aspx?opt=1 网络体系结构的概念 计算机网络就是一组通过一定形式连接起来的计算机系统,它需要四个要素的支持,即通信线路和通信设 ...
- ShellSort uva
ShellSort He made each turtle stand on another one's back And he piled them all up in a nine-turtle ...
- this作用域详解
大家在使用Javascript的时候经常被this这个家伙搞得晕头转向的.在Javascript中它却显得古灵精怪的,因为它不是固定不变的,而是随着它的执行环境的改变而改变.在Javascript中t ...
- 【转】JS模块化工具requirejs教程(一):初识requirejs
随着网站功能逐渐丰富,网页中的js也变得越来越复杂和臃肿,原有通过script标签来导入一个个的js文件这种方式已经不能满足现在互联网开发模式,我们需要团队协作.模块复用.单元测试等等一系列复杂的需求 ...
- [luoguP1090][Noip2004]合并果子
合并果子 首先来看一下题目: (OI2004合并果子) [题目描述] 果园里,多多已经将所有的果子打了下来,而且按果子的 ...
- Android学习笔记_73_授权过程
.需要申请App Key和App Secret.不同的开发平台有不同的接入方式,可以参考文档,然后将这两个值放进去. .通过OAuth类实现认证,它会自动跳转到认证界面,进行授权,成功之后需要处理回调 ...
- detection工作
今天看到YOLO2的工作还是很不错的,效果好,关键是速度也快,已经完胜SSD了感觉. 虽然faster rcnn各方面效果都不错,但是从简单粗暴的角度考虑,SSD和YOLO真的深得我心啊. 检测模型, ...
- o'Reill的SVG精髓(第二版)学习笔记——第四章
第四章:基本形状 4.1线段 SVG可以使用<line>元素画出一条直线段.使用时只需要指定线段起止点的x和y坐标即可.指定坐标时可以不带单位,此时会使用用户坐标,也可以带上单位,如em. ...
- 動態SQL運用實例
動態SQL運用實例 語法8.1.6之前: EXECUTE IMMEDIATE dynamic_sql_string [INTO {define_var1 [, define_var2] ... | p ...