为什么Java开发需要配置环境变量

 更新时间:2020年08月27日 09:10:15   作者:RioTian  
这篇文章主要介绍了为什么Java开发需要配置环境变量,帮助大家更好的理解和学习Java,感兴趣的朋友可以了解下

之前学习 Java 的时候,感觉最难做的一件事情就是配置 jdk 的环境。那叫一个困难啊,Path, JAVA_HOME, CLASSPATH 印象深刻的很…(但是现在 JDK11 不用再配置 classpath 了,jre 和 jdk 合并了)
就在去年暑假,要配 OpenCV 的环境,要调的东西还是比较多的,对环境配置的概念又加深了。
现在懂的多了,配过的环境也多了,配过的平台也不算少。现在就想分享一下 关于我对配环境这件事情的感受。

那就以 Windows 来说说环境配置的问题,Linux 下的其实差不多。

为什么需要环境变量

我记得计算机网络的老师在给我们讲 ip/mac 地址 的时候提过一个例子:

你刚到这个班,班里都是新同学,你想找班里的小明同学该怎么办?
答:在班里喊一声小明。这当然可以,小明肯定会响应你。对局域网来说也是如此。
但是,如果有一张座位表,上面有每个同学的座位信息,你想找到某个人是不是就很简单了。

环境变量也是如此,也很适合这个例子。
当用户在 cmd 中执行一个命令的时候,命令行的解释器就会去找你要执行的命令。
那么是去哪里找可执行的命令呢?两个地方:

  • 当前路径下的可执行文件
  • 环境变量 Path 中保存的路径下的可执行文件(包括系统变量和用户变量)

举个例子

举个栗子:
win + r 大家都用过吧,经常用来快速运行某些程序,比如打开命令行窗口我们就会用到:

那电脑是怎么知道 cmd 在哪儿的呢?

能看到 cmd.exe 是在 C:\Windows\System32\ 和 C:\Windows\SysWOW64\ 这两个路径下都有的,那就是说,电脑是去这两个路径之一打开的 cmd.exe,那我们来看一下,系统环境变量里到底有没有这两个路径的其中一个呢?

查看一下系统的环境变量中的 Path 是不是有这个路径:
在小娜的输入框里输入 path 或者 环境 可以直接跳转到修改环境变量的地方,不行的话只能在计算机图标右键属性了。

可以验证了吧~

所以这个流程我们也弄清楚了:

你在运行窗口输入 cmd:
-> 解释器去寻找这个文件:
-> 先寻找当前路径下是否有
-> 再寻找环境变量中的Path保存的路径是否有
-> 没找到就报没找到

所以如果你没配置某个可执行文件到 Path 里,那你就得手动输入该文件的绝对路径才能打开了。
比如说 Java…

Path 外的其他字段

其他的一些字段也是方便我们使用的,想用的时候使用 %字段名% 就能调用了。
比如说我在系统设置里设置了 CMDER_ROOT 字段,将其赋值为 D:\0ArtinD\cmder,这是一个路径。

然后我想打开该路径,就可以使用该字段名啦:

简单来说!就是编程中的变量名。定义一个常量,想用的时候可以使用。

用户变量和系统变量

操作系统中有用户的概念。
用户变量只对当前登录的用户生效。
系统变量对当前计算机的所有用户生效。

以上就是为什么Java开发需要配置环境变量的详细内容,更多关于Java 环境变量的资料请关注脚本之家其它相关文章!

相关文章

  • Java中使用BigDecimal进行浮点数运算

    Java中使用BigDecimal进行浮点数运算

    这篇文章主要介绍了Java中使用BigDecimal进行浮点数运算,需要的朋友可以参考下
    2014-07-07
  • Spring Data JPA 注解Entity关联关系使用详解

    Spring Data JPA 注解Entity关联关系使用详解

    这篇文章主要为大家介绍了Spring Data JPA 注解Entity关联关系使用详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-09-09
  • 通过Java组合问题看透回溯法

    通过Java组合问题看透回溯法

    今天给大家分享一道LeetCode算法题,题目不是很困难,但是从这到简单的题目我们可以分析出回溯算法的几个核心要点,感兴趣的可以了解一下
    2022-09-09
  • Maven项目打包成可执行Jar文件步骤解析

    Maven项目打包成可执行Jar文件步骤解析

    这篇文章主要介绍了Maven项目如何打包成可执行Jar文件,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-05-05
  • spring cloud zuul增加header传输的操作

    spring cloud zuul增加header传输的操作

    这篇文章主要介绍了spring cloud zuul增加header传输的操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-06-06
  • mybatis example如何自动生成代码 排序语句

    mybatis example如何自动生成代码 排序语句

    这篇文章主要介绍了mybatis example如何自动生成代码 排序语句,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-12-12
  • java.util.Date与java.sql.Date的区别

    java.util.Date与java.sql.Date的区别

    这篇文章主要介绍了java.util.Date与java.sql.Date的区别的相关资料,需要的朋友可以参考下
    2015-07-07
  • Java中反射的一个简单使用

    Java中反射的一个简单使用

    一直感觉Java的反射机制很强大,JAVA反射技术在平时我们的开发中虽然很少会用到,但在我们所使用的框架源码中是经常会用到的。这篇文中就给大家介绍了关于Java中反射的一个简单使用,有需要的朋友们下面来一起看看吧。
    2016-11-11
  • 带你入门Java的集合

    带你入门Java的集合

    Java的集合类型都是对java.util包中Collection接口的继承,这里我们主要介绍依赖于collection的一些主分支,一起来看一下Java中的collection集合类型总结
    2021-07-07
  • Java synchronized轻量级锁实现过程浅析

    Java synchronized轻量级锁实现过程浅析

    这篇文章主要介绍了Java synchronized轻量级锁实现过程,synchronized是Java里的一个关键字,起到的一个效果是"监视器锁",它的功能就是保证操作的原子性,同时禁止指令重排序和保证内存的可见性
    2023-02-02

最新评论