JDK,全称Java DevelopmentKit,它提供了Java的开发环境和运行环境,主要用于开发JAVA程序,面向Java程序的开发者,类似面向开发人员使用的SDK。SDK是Software Development Kit一般指软件开发包,可以包括函数库、编译程序等。
JRE,全称Java RuntimeEnviroment,它是指Java的运行环境,是面向Java程序的使用者,而不是开发者。
JVM,全称Java Virtual Machine,JVM就是我们常说的java虚拟机,它是整个java实现跨平台的最核心的部分,所有的java程序会首先被编译为.class的类文件,这种类文件可以在虚拟机上执行,也就是说class并不直接与机器的操作系统相对应,而是经过虚拟机间接与操作系统交互,由虚拟机将程序解释给本地系统执行。
安装JDK时,如果选择安装独立的jre,这时候Java目录下就会出现两套非常相似jre,比如:D:Javajdk1.8.0_40jre和D:Javajre1.8.0_40(即独立的jre)。存在两套jre的原因是:JDK里面的工具也是用JAVA编写的,它们本身运行的时候也需要一套JRE,即D:Javajdk1.8.0_40jre。而D:Javajre1.8.0_40目录下的JRE是用来执行我们自己编写(或外部安装)的JAVA程序。当然,两套JRE中的任何一套都可以用来执行我们自己编写的JAVA程序,但是JDK里面的工具一般只会由D:Javajdk1.8.0_40目录下的jre来执行。(这个个人猜测应该和的寻找jre目录的顺序有关系的查找jre的目录的顺序下面会介绍)。
系统存在多套jre时,那么由谁来决定使用哪一套jre呢?这个重担就落在的身上。
比如如果在命令行中输入java xxx的时候的任务就是在我们电脑系统中众多的jre中找到合适的jre来执行xxx。依据以下顺序来寻找jre:
(1)自己的目录下有没有jre目录;
(2)父目录下有没有jre目录;(D:Javajdk1.8.0_40bin中的执行时只会使用D:Javajdk1.8.0_40jre的jre,就是出于这个原因);
(3)查询注册表HKEY_LOCAL_MACHINESoftwareJavaSoftJavaRuntime Environment。
所以的执行结果与我们电脑里哪一个(搜索一下就会发现我们电脑里面也不止一个)被执行以及哪套jre来执行JVA程序有很大的关系。
另外在找到合适的jre以后,还有一个验证版本的程序,也就是与jre的版本一致才可以执行。如果出现版本不一致的问题,一定要记得两件事情:
(1)哪一个被执行;
(2找到哪一套jre。
只要这两件事情确定了,我们就抓住了问题的来龙去脉,理解起来也就轻而易举了。
在cmd中输入where+空格+java,如果系统环境变量path中存在,就会输出相应的路径。
我们跟踪这个程序文件,发现它是一个快捷方式,如下图:
进而跟踪具体路径,如下:
通过这个我们也能验证D:Javajre1.8.0_40这个jre主要是为外部JAVA程序服务的(此时还没有配置JDK的环境变量)。
配置分为2个部分,1,java命令路径。2,java加载类。
1、先配置JAVA_HOME,这个主要是为方便以后需要配置其他程序的java路径。比如JAVA_HOME配置为:D:Javajdk1.8.0_40。
2、配置java命令。比如如何知道java和javac的位置;配置如下:%JAVA_HOME%bin;%JAVA_HOME%jrebin。这个不知道为什么配置jrebin。
3、配置加载类的路径。CLASSPATH为.;%JAVA_HOME%libdt.jar;%JAVA_HOME%libtools.jar。注意不要忘了当前路径“.”,因为程序运行时不止需要系统类,同时也会加载自己写的类。
参考网址:
.html
.html
.html
本文发布于:2024-01-30 04:31:08,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170656027219233.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |