JDK安装环境变量配置以及背后的原理
JDK的安装
首先呢我们打开jdk的官网
http://www.oracle.com/technetwork/java/javase/downloads/
进入后我们找到jdk8,我之前配置过jdk11,但是后来发现因为jdk版本过高,在win11下不仅部分JavaWeb功能被更新换代了,同时配置Tomcat的时候还需要在startup文件下设置环境变量,后续还有种种问题,不要太悲催,索性换个年轻的版本啦.

因为我的电脑是windows64,所以我下载64对应的exe:

有些小朋友可能想知道如何看自己电脑的版本:
右键选择显示设置:

这时我的jdk已经下载好啦,同时还生成了jre8.注意:如果你下载的是jdk11,不会自动帮你生成jre.在普通的Java项目中,有没有jre其实并不是那么重要.但是在Tomcat的配置中,有没有jre直接影响服务器对路径的读取!这个时候需要手动生成jre!

然后就到了激动人心的环境变量配置时间.
环境变量配置
显示设置点击后搜索高级系统设置,然后可以得到:


在系统变量中新建一个变量JAVA_HOME


需要找到安装jdk下的包含lib目录的路径:

然后需要配置path
变量名:Path
变量值:%JAVA_HOME%\bin;

最后配置CLASSPATH
变量名:CLASSPATH
变量值:.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;
注意哦,此处分号的前面的点一定要写,否则无法用命令行读取java的.class文件。
图片就不放了.
最后在搜索栏里搜索cmd,以管理员身份运行
输入命令java -version
出现如图所示的结果即可.

原理
鄙人不才,有两年的环境变量配置经验(配置了两年才配好),好的啦,开个玩笑.
我在配置tomcat环境变量失败的时候,曾经看到一个奇怪的要求.
需要在setclasspath.bat文件的开头声明环境变量,简单就是set JAVA_HOME =路径、set JRE_HOME=路径.
有的甚至只需要在catalina.bat中设置就好.
所以我们发现第一:java的各个bat之间有互相调用的关系.
第二:系统无法直接读取jdk中我们需要的文件(比如我们真正调用的java.exe)
第三,但是输入命令时系统可以直接读取jdk中某些其他文件.
根据以上的推测,我去查找了求证资料.整理如下:
1:环境变量其实就是一系列的目录,告诉我们文件的具体方位.而参照我们C语言每次运行时会弹出的exe文件,对Java代码的编译其实也是启动java.exe或者其它.所以我们要将java.exe等目录加入到path这个环境变量中.cmd的命令会直接去path读取.
但是问题来了,要读取的目录与命令有那么多,难道我们要将所有的命令都加入到path中嘛,我们怎么知道什么时候要用到什么目录.
根本不用担心,因为path对目录的读取是一个目录一个目录读下去的.
举个例子,我们假设path接收命令要对jdk的lib目录中的dt进行读取.它发现有这样一条指令%JAVA_HOME%lib.JAVA_HOME我们之前已经配置过了是jdk的路径,指令顺利进入lib目录,读取到tools.jar,发现不对开始读取下一个sa-jdi.jar,一直读到自己想要的为止.

2:那么classpath的作用又是什么?
我们在idea中新建一个Java文件:

比如这个,最开始是Text16.java,编译过后就变成了Text16.class文件,然后由类装载器进行装载,那么类装载器怎么知道.class文件在哪.这个时候就需要用到classpath啦.classpath和path的原理相同,也是一个目录一个目录的去读取,在dt.jar与tools.jar中.
,最开始是Text16.java,编译过后就变成了Text16.class文件,然后由类装载器进行装载,那么类装载器怎么知道.class文件在哪.这个时候就需要用到classpath啦.classpath和path的原理相同,也是一个目录一个目录的去读取,在dt.jar与tools.jar中.
但是在1.5之后classpath不是必须配置;了,在1.5之前找不到JDKlib文件下的.jar所以无法在当前目录下加载类.而JDK的1.5之后JRE能自动搜索目录下类文件,并对dt.jar进行加载,也就没有必要进行手动配置啦.
本文详细介绍了在Windows环境下如何下载JDK 8,包括检查系统版本和选择对应版本,以及如何配置JAVA_HOME、Path和CLASSPATH环境变量。重点讲述了环境变量配置的原理,涉及Java.exe与path、classpath的关系,并解释了不同版本JDK对配置的需求变化。

8606

被折叠的 条评论
为什么被折叠?



