【Java 知识点详解 10】为何要配置环境变量,rabbitmq 的消息持久化原理
简而言之,就是运行某个命令需要某些参数时,如果当前目录下找不到,则自动去环境变量中寻找。
(2)软件共用
很多朋友会在自己的计算机上安装双系统,例如 C 盘安装 Windows XP,D 盘安装 Windows 7。可是某些软件往往只在 Windows XP 系统中安装,Windows 7 系统中是无法正常使用的,比较麻烦却有效的方法是再安装一遍。当我们了解了环境变量中的用途后就可以很好解决双系统的软件共用问题。
(3)系统运行
为什么在 Windows XP 中安装了的软件在 Windows 7 下无法运行呢(绿色软件除外)?原因是安装软件时往往须要向系统目录中复制某些文件,而使用另外一个系统时会由于缺少这些文件而无法运行。因此,我们可以通过设置环境变量的方法来解决这个问题。
三、Java 环境变量
1、Java jdk(Java Development kit)的构成
JDK 是?Java 语言的软件开发工具包,主要用于移动设备、嵌入式设备上的 java 应用程序。JDK 是整个 java 开发的核心,它包含了 JAVA 的运行环境(JVM+Java 系统类库)和 JAVA 工具。
Java 运行环境(Java runtime environment,JRE)就是由 Java 虚拟机(Java virtual machine,JVM)以及一些标准函数库组成。
所以在这里,我们就知道了 JDK,JRE,JVM 之间的关系了。
![](https://static001.geekbang.org/infoq/30/30ba4e2c28dc4a0c39e28d0c3f871a86.png)
接下来我们看看安装后 jdk 的目录。
![](https://static001.geekbang.org/infoq/2e/2e08c2ae8e5b04a983b95f32863a5691.png)
这里 bin 目录就是 Java 的可执行文件,包括我们常会用到的 java,javac,javadoc 开发指令,我们程序的编译执行使用到的指令程序都是在这个目录下的。
![](https://static001.geekbang.org/infoq/75/75bcd784a35841128bc62ad8f9d25f7d.png)
2、运行 javac
因为配置了环境变量的缘故,如果 cmd 当前路径下没有找到,则会去环境变量 path 中去找,如果有运行,如果没有则报错。
![](https://static001.geekbang.org/infoq/a3/a397ff6ed868b60dfd47f6399fe0b855.png)
已配置的 Java 环境变量:
![](https://img
-blog.csdnimg.cn/20210801094813485.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2d1b3J1aV9qYXZh,size_16,color_FFFFFF,t_70)
![](https://static001.geekbang.org/infoq/07/075b34623c63e0bdbf8b2e063c78ffde.png)
3、如果不配置环境变量,那么 javac 命令在 bin 目录下能运行吗?在其它任意路径下能运行吗?
试一下,简单一点,更改 java_home 的路径
![](https://static001.geekbang.org/infoq/39/393b0cef87024dced60a82f6cc0c741a.png)
javac 命令在 bin 目录下能运行吗?
![](https://static001.geekbang.org/infoq/eb/eb49511bce76a6c1edb8c0f2cf71f6fc.png)
在其它任意路径下能运行吗?
![](https://static001.geekbang.org/infoq/1e/1efb44b274565ae74e5819811fa41c36.png)
4、那么为什么 jdk 的路径不能直接配置在 path 中,而是单独配置一个 JAVA_HOME 呢?
因为这是 Java 开发过程中一个约定俗成的东西,因为 Java 在最开始使用的时候,是需要搭建和使用 tomcat 服务器的,现在也是需要的,只不过 springboot 集成了 tomcat,不需要单独启动而已。
在 tomcat 中设置的变量就是 JAVA_HOME,是通过这个变量去访问 jdk 的,因为每个人安装 jdk 的路径是不尽相同的,所以想要调用,只能通过变量赋值的方式提前配置好,约定大于配置,我相信都通过这句话,应该就是这个道理吧。
评论