说明:如果只想配置java中jdk的path环境变量直接跳到三即可。

一,什么是环境变量?

一般是指在操作系统中用来指定操作系统运行环境的一些参数;如文件夹的位置。

环境变量是在操作系统中是一个特定名称的对象,它包含一个或者多个应用使用到的信息。

举例:Windows和DOS操作系统下的path变量:当要运行一个程序而没有告诉它一个完整的路径时;系统会先在当前目录下寻找此程序,如果没有还会继续到path变量中的路径去找,为了方便运行程序,我们就要在Windows下设置path变量。

二,环境变量的配置(以上一章简化打开微信的案例演示)

1在控制面板或者是此电脑找到高级系统设置->属性然后单击到如图面板,找到高级下面的环境变量点击打开

2在当前的使用的用户环境变量下或者是系统环境变量下找到path然后点击编辑 如图,

在当前使用下的用户环境变量和系统环境下配置环境变量的区别是:在当前使用的用户环境变量配置环境变量只能是当前的用户可以使用,换成其他用户就不能再使用,系统变量配置不管任何用户都可以使用。配置的方式一模一样。(这里以当前用户的环境变量配置为例)

3(第1种方法)点击编辑出现编辑环境变量面板,点击新建输入打开微信文件所在的路径,按确定返回到环境变量面板,按最下面的确定,一直确实下去就配置完成了,

适用于独立的软件应用,不和其他应用关联的程序

(第2种方法)在当前使用用户的变量或者系统变量下 找到path点击新建,

然后出现新建用户变量面板(如图),输入变量名:(随便取名字,建议取成大写应用的英文名称_HOME);输入变量值(应用所在位置的路径,建议直接粘贴复制避免出错),然后按下面的确定

然后和第一种方式一样找到path点击编辑,出现编辑环境变量面板,找到新建 输入%变量名%按确定返回到到环境变量面板,按最下面的确定就配置完成了。

4 然后我们来验证一下是否配置成功,打开cmd窗口,在任意盘符输入WeChat,都能打开微信,说明配置成功,其他应用也一样的操作步骤。两种方法都能成功说明配置成功,

 三,jdk8的path环境变量配置(重要)

1,配置前需要下载安装jdk,每个jdk的环境变量可能稍微不同,这里配置以jdk8版本为例

到 www.oracle.com下载JDK  然后直接安装 ,可以改变你要安装的路径(建议路径不要出现中文和空格,以免以后出现bug) 选择安装目录 安装过程中会出现两次安装提示 。第一次是安装 jdk ,第二次是安装 jre 。安装完成后就可以配置环境变量了

2 .找到 计算机→属性→高级系统设置→高级→环境变量→系统变量(或者当前用户下的环境变量)→新建 JAVA_HOME 变量 。变量值为jdk安装路径,按确定


在找到path点击编辑找到新建输入%JAVA_HOME%\bin按确定返回到编辑环境变量面板按确定即可

3 当输入java -version出现版本号,输入javac时没有提示不是命令时如图(java与-之间有个空格)说明配置成功。

但是这并不是最完整的配置,要更多的使用jdk的功能还要配置jdk自带的jre,只需在编辑环境变量面板中在配置jdk(%JAVA_HOME%\bin)下新建%JAVA_HOME%\jre\bin确定返回到环境变量面板再确定即可,这里最完整的配置就完成了

四 各个版本jdk结构的变化以及环境变量配置的阐述

1,在jdk5之前还要配置CLASSPATH变量;

CLASSPATH变量是用来 引导java解释器(java命令)在那些路径(目录)下找到要执行的类文件(javac编译生成后的class文件(字节码文件))。

CLASSPATH变量的配置的是用来指定java加载类的路径,只有类在CLASSPATH路径中时,java命令才能执行它。

CLASSPATH变量的配置:(jdk5之后版本不需要配置)

系统变量→新建 CLASSPATH 变量
变量值为 .;%JAVA_HOME%/lib;%JAVA_HOME%/lib/tools.jar;%JAVA_HOME%/lib/dt.jar(注意最前面有一点,代表当前目录,tools.jar是工具类库,dt.jar是关于java运行环境的类库;
在java5中,为了简化开发,JRE会自动搜索当前路径下的jar包,并自动加载dt.jar和tools.jar)

2,在长期版本支持中,在jdk11 之前安装jdk都会出现选择安装jdk和单独的jre,在jdk11之后(发行版本在jdk9之后)不在出现单独的jre,在安装好的jdk中也没有jre目录。

在jdk11之前,以jdk8为例,我们在安装好jdk和jre后,你会发现不用配置任何环境变量也能直接执行java这个命令,而java命令执行的java.exe要依赖于jre执行,这是为什么呢,不是说要配置环境变量才能在任意盘符下执行程序吗,

这是因为在安装单独的jre时,单独的jre会自动在系统变量path变量中自动配置一个名为 ....\javapath的环境变量(我的是C:\Program Files (x86)\Common Files\Oracle\Java\javapath)在这个目录下有三个应用程序,其中就有java.exe这个文件,所以不配置也能执行java命令

3 当我们配置好%JAVA_HOME%/lib(配置的是jdk下的bin文件)和%JAVA_HOME%\jre\bin(配置的是jdk下的jer下的bin文件)时

备注 这是本人独立的jer和jdk位置和版本,为了区分版本名字不一样

在com输入以下 命令可以得出一个结论,我们在执行java -version命令时优先使用的是独立的jer版本,这说明,我们在执行命令时也是优先使用独立的jer中的应用程序,环境变量的配置系统默认配置的优先级高于人工的优先级,(可以人为修改,感兴趣的伙伴可以尝试,不建议修改长期使用)。

4当我们在系统变量中 删除单独的jer的环境变量时,(我这里是对单独的jer中的javapath文件进行路径修改,如图,这个时候Javapath环境变量将不起作用)

当输入java - version这时使用的是jdk自带的jer。

5 jdk11(发行版本9)之后  随着虚拟化、容器化、微服务化的普及和流行,以前庞大的JRE已经跟不上时代的发展:作为一个运行时,里面经常包含了太多不需要的东西。比如,如果一台主机上的某个JRE仅仅是用来运行Apache Tomcat,那么JRE中用来支持SWT的部分就是浪费资源的,浪费空间又降低效率。jdk作为一个开发人员来说只需要轻量级的能够满足自己代码测试就行,越多越不利于测试和维护,不利于编程人员的开发,所以在jdk9之后舍弃了部分jer运行的组件,单独的jdk不在出现单独的jer文件目录,直接把必须要用到的jer中的内容封装到了一个模块组件中,供编程人员使用,模块技术的核心就是为了减少Java应用和Java核心运行时环境的大小与复杂性。为此,JDK本身进行了模块化,Oracle希望通过这种方式提升性能、安全性和可维护性。

在安装jdk中 jdk会自动配置以下四个应用程序的快捷键模式的JavaPath环境变量,在我们自己配置环境变量时直接可以删了这个环境变量配置,然后只需要配置jdk/bin目录的环境变量即可。


当我们同时安装了jdk和独立的jre时,系统会优先选择独立的jer下的java.exe,在上诉可是知道,然后当我们删除独立的jre环境变量,删除我们配置好的%JAVA_HOME%\jer\bin, 在cmd中输入java,得到的就是  jdk/bin目录下的java.exe执行的结果,可以输入javac进行验证,如果运行成功,再查看java -version运行版本,这时你会发现版本是自带的jre运行版本,当把自带的jer删除(或者更换目录)后执行java命令,jdk\bin 下的java.exe会自动根据公用的jre的注册表信息找到公用jre下执行的环境jvm,并执行。

可以得出在独立的jre没有配置环境变量下,会先使用自带的jre,如果没有自带的jre就会查找独立(公有)的jre运行,在寻找的时候还会进行对版本进行校验,版本不同不能运行

在独立jre配置了环境变量并且优先顺序大于自带的jre时,则jdk\bin 下的java.exe失效,优先使用公共jre 下的java.exe命令。

当我们删除独立的jre环境变量,同时配置好%JAVA_HOME%\jer\bin和%JAVA_HOME%\bin,这时就会按照配置的环境变量先后顺序进行执行,看系统先找到谁就使用谁,在没有公有jre下,两者并没有什么区别

当我们删除独立的jre和%JAVA_HOME%\bin的环境变量时,jre就相当于一个公有的jre,jre\bin\java.exe运行的也是自己本身。

上述中我们可以得出

在公有jre默认的环境变量没有被修改的情况下,使用的java命令都是执行公有jre的java.exe程序

在删除公有jre配置的情况下,%JAVA_HOME%\jer\bin和%JAVA_HOME%\bin 配置谁使用谁的java.exe命令,两者同时配置时,谁优先就用谁 当删除 专用jre时,使用的也是公有jre,当公有和专有都删除时,jdk不能正常运行

公有和专有jer的java.exe程序都只能运行本身,%JAVA_HOME%\bin下的java.exe 可以运行专有和公有的jre。

什么是环境变量?环境变量配置,jdk8的path环境变量配置,各个版本下jdk结构的变化以及环境变量配置的阐述,java命令执行三个不同目录下的java.exe说明相关推荐

  1. win10环境下jdk,jre安装以及环境变量配置

    win10环境下jdk,jre安装以及环境变量配置(带图详解) 1️⃣资源准备 jdk可以在官网下载 http://www.oracle.com/technetwork/java/javase/dow ...

  2. copy所有的java文件到硬盘_将d:\java目录下的所有.java文件复制到d:\jad目录下,并将原来文件的扩展名从.java改为.jad...

    listFiles方法接受一个FileFilter对象,这个FileFilter对象就是过虑的策略对象,不同的人提供不同的FileFilter实现,即提供了不同的过滤策略. //将d:\java目录下 ...

  3. 将d:\java目录下的所有.java文件复制到d:\jad 目录下,并将原来文件的扩展名从.java 改为.jad

    package com;import java.io.*; import java.util.ArrayList; import java.util.List; /* 编写一个程序,将d:\java目 ...

  4. 编写一个程序,将d:\java目录下的所有.java文件复制到d:\jad目录下,并将原来文件的扩展名从.java改为.jad

    package com.hbut.test; import java.io.File; import java.io.FileNotFoundException; import java.io.Fil ...

  5. 把java复制到e_编写一个程序,将e:\java目录下的所有.java文件复制到e:\jad目录下...

    package cn.io.file.demo; import java.io.BufferedReader; import java.io.BufferedWriter; import java.i ...

  6. Java算法面试题:编写一个程序,将e:\neck目录下的所有.java文件复制到e:\jpg目录下,并将原来文件的扩展名从.java改为.jpg...

    package com.swift;import java.io.File; import java.io.FileFilter; import java.io.FileInputStream; im ...

  7. 关于Java实现批量下载MinIO指定目录下的所有文件

    关于Java实现批量下载MinIO指定目录下的所有文件 Straightforward String bucketName = "bucket01";// 检查'mybucket' ...

  8. java命令执行类,这里设置了classpath,系统变量里的classpath将失效

    java命令执行类(类调用了某些jar包) (2011-03-02 14:24:42) 转载▼ 标签: 杂谈 分类: java 目录结构: bin: 编译目标库 lib:使用的jar类目录 src:源 ...

  9. java命令执行jar包main方法指定相关依赖

    1. 准备好工程执行所需的所有依赖jar包,也可以使用maven导出依赖的方法导出: 2. 将工程打包,此处打成jar包,如上图所示,zookeeper-learn-1.0-SNAPSHOT.jar, ...

最新文章

  1. 几种开源工作流引擎的简单比较(转)
  2. java触发器如何创建表_在java 中执行触发器代码、创表语句
  3. 数据段描述符和代码段描述符(二)——《x86汇编语言:从实模式到保护模式》读书笔记11
  4. 自然语言处理「迷惑行为大赏」
  5. python open permission denied_python - Image.open PermissionError:[Errno 13]权限被拒绝: - 堆栈内存溢出...
  6. 【数据库原理及应用】经典题库附答案(14章全)——第二章:关系数据库知识
  7. 大数据人工智能物联网论文_物联网学报“大数据”相关论文汇总
  8. yaml 数组_使用 YAML 保存游戏数据 !
  9. c语言中的数组二分法排序程序,#C语言#二分法查找有序数组
  10. wampserver集成环境和安装
  11. 20140524数据库课笔记
  12. 关于groupby与层次化索引的联系和层次化标签的使用
  13. java中递归算法_java中递归算法是什么怎么算的?
  14. 利用VBB仿真——实现数码管色子
  15. 【软件工程】安装rational rose的步骤
  16. 拓嘉辰丰电商:拼多多推广主要有哪些模式
  17. Python 玫瑰花绘制
  18. 网安、ctf常用网址
  19. VUE页面背景设置为视频
  20. 1623_MIT 6.828 在JOS中增加一条交互命令

热门文章

  1. 从前慢-MySql基础
  2. 运算器和控制器在计算机的作用,运算器和控制器合称为什么
  3. 支付宝小程序获取复选框选中值id,使其显示且可编辑
  4. 2019百度地图离线地图制作
  5. 关于谷歌浏览器无法正常上传图片的问题
  6. java版QQ 欢迎点评
  7. Emacs User's Guide
  8. vue后台管理知识点、难点总结01
  9. 【1034】计算三角形面积
  10. Flutter 打包APK aab