为什么Java开发需要配置环境变量
作者:RioTian 发布时间:2023-08-13 13:11:03
之前学习 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,这是一个路径。
然后我想打开该路径,就可以使用该字段名啦:
简单来说!就是编程中的变量名。定义一个常量,想用的时候可以使用。
用户变量和系统变量
操作系统中有用户的概念。
用户变量只对当前登录的用户生效。
系统变量对当前计算机的所有用户生效。
来源:https://www.cnblogs.com/RioTian/p/13567756.html
猜你喜欢
- AsyncTask什么是AsyncTaskAsyncTask是一个轻量级的异步任务类,它可以在线程池中执行后台任务,然后把执行的进度和结果传
- 参考:How to catch an Exception from a threadIs there a way to make Runna
- 本文实例为大家分享了Unity实现场景漫游相机的具体代码,供大家参考,具体内容如下前言拿到场景后总喜欢在场景里面玩一段时间,那这个脚本就是你
- 可以静态绑定数据源,这样就自动为DataGridView控件添加 相应的行。假如需要动态为DataGridView控件添加新行,方法有很多种
- 1.最常用的方法是创建一个计数器,判断是否遇到‘\0',不是'\0'指针就往后加一。int my_strlen(co
- 具体代码如下所示:***web.xml***<?xml version="1.0" encoding="
- 有时候,我们在同一个activity里面有很多fragment,在横竖屏的时候,有些fragment要求重新加载数据,有些不需要,如何简单控
- 具体可见http://developer.android.com/tools/debugging/ddms.html。 DDMS为IDE和e
- 本文实例为大家分享了Java实现简单幸运抽奖的具体代码,供大家参考,具体内容如下代码模块:User类:package test1;publi
- 一、什么是iText?在企业的信息系统中,报表处理一直占比较重要的作用,iText是一种生成PDF报表的Java组件。通过在服务器端使用Js
- Java 使用getClass().getResourceAsStream()方法获取资源之前想获取一个资源文件做一些处理,使用getCla
- 这篇文章主要介绍了spring boot如何实现切割分片上传,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需
- 本文实例为大家分享了Android实现登录注册功能的具体代码,供大家参考,具体内容如下运行环境 Android Studio总体效果图一、
- 知识点:1.使用SQL Helper创建数据库2.数据的增删查改(PRDU:Put、Read、Delete、Update)背景知识:上篇文章
- 1、mybatis-plus @DS实现动态切换数据源原理首先mybatis-plus使用com.baomidou.dynamic.data
- 本文实例讲述了C#实现Base64处理的加密解密,编码解码。分享给大家供大家参考,具体如下:using System;using Syste
- 每当想找哪个运算符优先级高时,很多时候总是想找的就没有,真让人气愤!现在,终于有个我个人觉得非常全的,分享给大家,欢迎拍砖!C语言运算符优先
- 简单的实现了一个树的结构,很不完善!后续参考一些其他代码的实现。试图实现叶子存在可变的节点,能够用来解析xml文件。叶子的代码:packag
- Android手势解锁本文讲述的是一个手势解锁的库,可以定制显示隐藏宫格点、路径、并且带有小九宫格显示图,和震动!让你学会使用这个简单,高效
- 这里我们以拨打电话申请权限来写个小例子,也就是CALL_PHONE,因为拨打电话会涉及用户手机的资费问题,因而被列为了危险权限,在Andro