一直有个疑问,我装了jdk1.5,配置好环境变量(classpath,path,java_home),但当我在命令提示符下面运行java –version命令时,它显示如下:
为什么装了JDK1.5,但显示的版本依然是JDK1.6呢?
首先我们先抛开这个问题来讲下JRE,JVM,JDK的关系。
JRE(Java Runtime Environment)java运行环境,就像我们要在电脑上运行一个视频软件的时候必须在Windows或Linux操作系统上一样。那么我们就可以把它看成是一个操作系统。也就是说JRE提供了Java执行的软件平台。
JVM (Java Virtual Machine)Java虚拟机。所谓“虚拟机”顾名思义就是模拟出来的东西。就像是我们在用电脑看电视,但是电脑里并没有像电视机里面一样的硬件支持,但是我们仍然可以从电脑里接受电视台的节目。那是因为我们编写了一个可以模拟电视机硬件工作的软件运行在电脑的平台上面的原因。同样JVM就是模拟了电脑的硬件,它同样有着像CPU一样可以执行代码的功能。它的实现具体有:指令集、寄存器组、类文件格式、栈、垃圾收集堆、内存区。可以把它理解成是专门用来执行Java程序的一台机器。也就是说JVM提供了Java执行的硬件平台。JVM上执行的代码都存放在 .class 文件中。JVM只执行字节码文件。
JDK (Java Development Kit)Java开发工具包。我们有了硬件和软件两个平台后就可以做我们自己想做的事情了。JDK就是我们用来做事情的工具,它包括JRE还有其他工具。我们所说版本的不同,也就是说它里面的工具有差异。就像是你不同的工具箱里放着不同的工具一样。举个例子:最常用的一个就是javac,它是把.java的文件翻译成.class文件的工具。然后让JVM来执行.class文件中的字节码。(就像电脑的CPU只认识0或1的道理)
搞清楚了三者的关系,我们回到原来的问题,对于JRE来说,既然它类似于操作系统,那它必然会有不同的版本(就像WIN2003,WINXP),这样说明在本机中不单单只有JDK1.5,还有JDK1.6或者更多。(以下是我在本机中搜索java.exe所有结果)
既然有这么多java.exe,那我们如何去正确地去执行特定的版本呢?
每个命令都是通过path路径里的地址去查找它所对应的脚本文件,java也不例外。我们先看下path的值。
按顺序查找到在c:\WINDOWS\system32下有java.exe执行文件。根据java.exe的执行原理,它会去找与它版本适合的JRE来执行类文件(java.exe相当于是一个包装器,具体工作是调用JRE中的相关类来执行)。
具体java.exe是依照以下逻辑来查找JRE的:
1、 查看当前文件下是否有JRE目录
2、 父目录底下是否有JRE子目录
3、 查询注册表 (HKEY_LOCAL_MACHINE\Software\JavaSoft\JavaRuntime Environment\)
目前我的情况,1、2两种情况都不存在,通过注册表中的信息显示,存在JRE1.6版本。
根据它的路径,我们知道了,为什么输入java –version显示的是1.6版本的信息。
如何去避免此类情况呢?
其实这个问题很好解决,只要你的path路径作相应的调整,如下图
就相当于在执行java –version的时候,让他先找到c:\program Files\java\jdk.1.5.0_15\bin下的java.exe执行文件,该执行文件会调用它父目录底下的JRE子目录中的jar,完成一系列操作。
后续:
附上一张JRE与PC的对比图
- 大小: 21.4 KB
- 大小: 18.5 KB
- 大小: 8.3 KB
- 大小: 6.3 KB
- 大小: 8.8 KB
- 大小: 23.8 KB
分享到:
相关推荐
#### 五、JDK与JRE的关系 JDK包含了JRE,也就是说,如果你安装了JDK,你就同时拥有了运行Java程序的能力(通过JRE)以及开发Java程序的能力(通过JDK提供的各种工具)。通常情况下,开发人员会安装JDK,而仅需要...
无论是对于初学者还是资深开发者而言,深入理解这三者之间的关系及各自的功能是非常重要的。本文将详细阐述这些概念,并通过具体的示例代码帮助读者更好地理解它们之间的联系。 #### 二、JDK(Java Development Kit...
一张图看懂JVM、JRE、JDK
在Java的世界里,了解数据类型、JDK(Java Development Kit)、JRE(Java Runtime Environment)以及JVM(Java Virtual Machine)的关系至关重要,它们是Java程序运行的基础。 首先,让我们深入探讨Java中的数据...
Java开发中的JDK、JRE和JVM是三个至关重要的概念,它们构成了Java应用程序的运行基础。理解这三个术语以及它们之间的关系是每个Java开发者必备的知识。 JDK(Java Development Kit)是Java开发工具包,它是Java开发...
简示JDK_JRE_JVM的大小关系
一、JDK、JRE、JVM的关系 1. JDK(Java Development Kit):Java开发工具包,是Java开发人员必备的软件,包含了编译器(javac)、JRE、调试器、文档生成工具、打包工具等。它提供了编写、编译、测试和部署Java应用...
Java 技术体系的核心组成部分包括 JDK (Java Development Kit),JRE (Java Runtime Environment) 和 JVM (Java Virtual Machine)。理解这三个概念对于Java开发者至关重要。 首先,JDK是Java开发工具包,它是Java...
在安装和配置Linux上的JDK 1.7时,通常需要下载对应的二进制文件,然后解压到指定目录(如/usr/lib/jvm),设置环境变量JAVA_HOME、PATH和CLASSPATH。同时,为了确保系统能够正确识别并使用新安装的JDK,还需要更新...
Java开发中的JDK、JRE和JVM是三个至关重要的组件,它们构成了Java技术栈的基础。理解它们的区别和关系对于任何Java开发者来说都是至关重要的。 首先,Java开发工具包(JDK)是Java编程的核心组件,它包含了开发Java...
详解JDK,JRE,JVM.md
JDK(java Development Kit):java 的开发和运行环境,包括java 的开发工具和 jre,在程序员的电脑上当然要安装JDK; JRE(Java Runtime Environment):它是Java运行环境,包括,java 运行的所需的类库+JVM(java ...
了解Java的核心组件,如JDK、JRE和JVM之间的关系对于任何Java开发者来说至关重要。在这个基础教程中,我们将深入探讨这些概念。 首先,我们来解析标题中的关键术语: 1. **JDK(Java Development Kit)**:它是...
总的来说,JDK、JRE和JVM之间的关系可以总结为:JDK是开发Java程序的全套工具,包含JRE;JRE是运行Java程序所必需的环境,它包括JVM和Java核心类库;而JVM则是负责解释执行Java字节码的虚拟计算机。理解这三个概念...
JDK(Java Development Kit)和 JRE(Java Runtime Environment)是 Java 语言的两个核心组件,它们之间存在着一定的关系和区别。下面我们将详细介绍 JDK 和 JRE 的概念、区别和关系。 JDK JDK 是 Java 语言的软件...
Java开发工具包(JDK)是Java编程的核心组件,提供了编写、编译和运行Java程序所需的一切工具。...理解JDK、JVM和JRE之间的关系对于Java开发者来说至关重要,因为它们构成了Java开发和运行的基础框架。
3.JDK、JRE、JVM的区别 3.1 Java为什么能跨平台,实现一次编写,多处运行? 1.编译器、调试器 JAVA编译器(javac.exe) JAVA编译器的作用是将(.java文件)编译成字节码文件,是最基本的开发工具。编译时首先读入java...
学生做的,请见谅
Java开发和运行环境中,JRE(Java Runtime Environment)与JDK(Java Development Kit)是两个至关重要的组件。它们之间的主要区别在于用途和包含的内容。 JRE是Java运行环境,它是运行Java应用程序所必需的。它...