一文彻底搞懂Java中的环境变量
一文搞懂Java环境变量
记得刚接触Java,第一件事就是配环境变量,作为一个初学者,只知道环境变量怎样配,在加上各种IDE使我们能方便的开发,而忽略了其本质的东西,只知其然不知其所以然,随着不断的深入,终于明白了Java环境变量所代表的的含义。
首先我们来看一下Java中的环境变量,以我自己的为例
- JAVA_HOME:C:\Program Files\Java\jdk1.8.0_144
 - PATH:%JAVA_HOME%\bin
 - CLASSPATH:.(英文下的一个
.有的版本是.;还有后面跟这样的.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;) 
在Linux下的环境变量

我们先来来解决第一个问题,我们为什么要配置环境变量?
说起配置环境变量,如果我们不配置就不能运行java程序了吗?答案显示是只要安装了jdk(或者jre)我们我们就能运行.class的文件,但是此时在运行时想要运行成功,怎应该用如下方式:

而配好环境变量后编译运行的过程为:

从中我们可以看出环境变量的作用是帮我们省去了java、javac命令前的绝对路径,但其功能可以直接使用。
我们在来看看Windows中内置的环境变量:

我们关注其中的%SystemRoot%\system32

而%SystemRoot%\system32文件夹下放的正是Windows的系统文件,如cmd.exe、calc.exe、dxdiag.exe、msconfig.exe等,这些文件的可以之间在cmd下输入文件名就可以直接运行,但是如果把环境变量中的%SystemRoot%\system32删掉后,就不能运行这些程序。
到现在我想对环境变量大家应该有一个深刻的认识了:配好境变量后,当我们运行程序时,系统会自动在环境变量对应的目录下去找我们所要执行的程序,因此省去了命令前的一大串绝对路径。
最后我们来详细的探究一下java环境变量的具体作用:
JAVA_HOME:C:\Program Files\Java\jdk1.8.0_144
JAVA_HOME是指定jdk的安装目录
PATH:%JAVA_HOME%\bin
PATH是指定JAVA命令所在的目录
CLASSPATH:.(英文下的一个
.有的版本是.;还有后面跟这样的.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;)CLASSPATH是指定所要执行的字节码(.class)文件的位置
可以通过一个简单的例子来理解CLASSPATH

虽然Hello.class文件不再执行java Hello.class命令的目录下,但是通过参数-classpath指定.class文件的位置任然可以运行Hello.class文件。
一文彻底搞懂Java中的环境变量的更多相关文章
- 来吧,一文彻底搞懂Java中最特殊的存在——null
		
没事的时候,我并不喜欢逛 P 站,而喜欢逛 programcreek 这些技术型网站,于是那天晚上,在夜深人静的时候,我就发现了一个专注基础但不容忽视的主题.比如说:Java 中的 null 到底是什 ...
 - 来吧,一文彻底搞懂Java中的Comparable和Comparator
		
大家好,我是沉默王二,今天在逛 programcreek 的时候,我发现了一些专注细节但价值连城的主题.比如说:Java 的 Comparable 和 Comparator 是兄弟俩吗?像这类灵魂拷问 ...
 - 轻松搞懂Java中的自旋锁
		
前言 在之前的文章<一文彻底搞懂面试中常问的各种“锁”>中介绍了Java中的各种“锁”,可能对于不是很了解这些概念的同学来说会觉得有点绕,所以我决定拆分出来,逐步详细的介绍一下这些锁的来龙 ...
 - 深入理解Java中配置环境变量
		
深入理解Java中配置环境变量 配置的目的: 本来只在安装JDK的bin目下能运行java.exe,javac.exe,jar.exe,javadoc.exe等Java开发工具包命令,我们现在想让在所 ...
 - 一文搞懂--Java中重写equals方法为什么要重写hashcode方法?
		
Java中重写equals方法为什么要重写hashcode方法? 直接看下面的例子: 首先我们只重写equals()方法 public class Test { public static void ...
 - 一文搞懂 Java 中的枚举,写得非常好!
		
知识点 概念 enum的全称为 enumeration, 是 JDK 1.5 中引入的新特性. 在Java中,被 enum关键字修饰的类型就是枚举类型.形式如下: enum Color { RED, ...
 - 一篇文章让你搞懂Java中的静态代理和动态代理
		
什么是代理模式 代理模式是常用的java设计模式,在Java中我们通常会通过new一个对象再调用其对应的方法来访问我们需要的服务.代理模式则是通过创建代理类(proxy)的方式间接地来访问我们需要的服 ...
 - 一文彻底搞懂JavaScript中的prototype
		
prototype初步认识 在学习JavaScript中,遇到了prototype,经过一番了解,知道它是可以进行动态扩展的 function Func(){}; var func1 = new Fu ...
 - java中JDK环境变量的配置
		
JDK的配置在 window中的配置,我的电脑-->属性-->高级系统设置-->高级-->环境变量中配置,具体下图
 
随机推荐
- modelform组件以及ChoiceField属性
			
一. Forms组件补充 1.__init__() 如果继承forms.Form的类中的每一个字段,或者大部分字段都做了相同的约束,可以将该约束放到__init__中编写 实例:每一个字段都需要添加f ...
 - mybatis链接数据库
			
DBTools类 public class DBTools { // 加载mybatis文件 public static SqlSession getSession() { //加载配置文件 Inpu ...
 - 缩放手势 ScaleGestureDetector  源码解析,这一篇就够了
			
其实在我们日常的编程中,对于缩放手势的使用并不是很经常,这一手势主要是用在图片浏览方面,比如下方例子.但是(敲重点),作为 Android 入门的基础来说,学习 ScaleGestureDetecto ...
 - 向HashMap中添加1000个元素,设置new HashMap()值为多少合适?
			
在已知元素容量的情况下,为了尽量减少碰撞增加查询效率,应该尽量选择较大数的同时避免资源浪费. HashMap底层通过hash值来计算索引位置的源码: 1.重新计算hash值 static final ...
 - 阿里云部署Redis服务器远程连接问题
			
昨天在阿里云免费领了一个月的云服务器,就着最近学的SpringBoot,准备做一个SpringBoot与Redis的整合. 因为以前用的Redis都是安装在本地的,使用过程中没遇到什么大问题,可是一旦 ...
 - Free MP3 CD Ripper_缓冲区溢出远程代码执行_CVE-2019-9766漏洞复现
			
Free MP3 CD Ripper_缓冲区溢出远程代码执行_CVE-2019-9766漏洞复现 一.漏洞描述 Free MP3 CD Ripper是一款音频格式转换器.Free MP3 CD Rip ...
 - Spark学习之路(五)——  Spark运行模式与作业提交
			
一.作业提交 1.1 spark-submit Spark所有模式均使用spark-submit命令提交作业,其格式如下: ./bin/spark-submit \ --class <main- ...
 - Electron为文件浏览器创建图标(三)
			
在前面的文章中,请看之前文章,我们已经完成了使用 electron做文件浏览器这么一个应用,现在我们需要为应用创建图标操作.为应用创建图标以后,我们就可以从计算机中与其他应用区分开来,如果我们自己会做 ...
 - 【工具】读取proprtties工具类
			
获取properties内容: 基本的使用看网络上大多是这样的,使用时注意线程安全以及读写的实时性问题. 1.直接通过流读取(反射): InputStream inStream = this.get ...
 - php程序守护进程
			
php命令程序实习守护进程2种方式: 1.使用nohup nohup php myprog.php > log.txt & 2.使用程序 function daemonize() { $ ...