作为年龄上堪称老鸟而技术上却是菜鸟的老菜鸟,为了祖国的编程事业,不惜拿出一个月工资,淘了一台配置稍高的二手笔记本,打算与老笔记本中的撸啊撸片彻底说再见,誓要在新机种开启一番撸啊撸的新事业。当然,撸代码离不开基本的环境搭建,每次新机上手都要百度一堆杂乱的似是而非的环境搭建教程,才勉强把开发环境搭建起来,时间耗费不少,但终是拾人牙慧,生搬硬套,从未能理解深层原理,将其内化吸收形成自己的技术积累;而环境搭建虽然基础,但编程界多少前辈大牛都是从此开始的,千万行代码的撸出也都依赖于此,所以,花时间总结一下,思考一番,确有必要。今天先来讲讲最最基本的环境变量,博主度娘无数,收获不小,现分两个方面来探究环境变量的问题:一是为什么要配置,二是如何配置。

配置环境变量:Why?

为了回答为什么的问题,还是先将JDK下载好,然后布衣博主先一步步的试错完毕,然后再跟大家分享正确的姿势。安装JDK首先肯定是去Oracle官网下载适合自己的开发版本啦,或许是沉浸在JDK1.7的开发环境中太久了,不看官网不知道,一看尼玛JDK1.9都发布了,可怜布衣博主连JDK1.8长啥样都还没见过呢。伤心三秒,果断下载JDK1.8的版本来尝尝。下面是下载主页的重点内容,相信大家都知道具体操作:

安装JDK也很简单,先是JDK,然后是JRE,如果要自定义路径,注意两者不要安装在同一个包下面。然后,作为Java开发者,就会按基本套路开始配置起环境变量。如果仅仅是作为一个代码搬运工,百度有一堆环境变量的配置方式,傻瓜也会配置,但要想成为一个高阶一些的码农,在进行一个操作之前,总该知道你干这件事的缘由——为什么要配置环境变量,如果不配置又会怎样?平时看起来只是开发入门的基础操作,深究起来其实并不简单。有人会呵呵一笑很倾城——不配环境变量,我们怎么开发?欸,这样的问题,我只能说,编程这玩意儿,很多时候不动脑子是可以的,但是不动手却不行。布衣博主以前的固有思想也是觉得,配置环境变量是Java开发的固定姿势,可是今天为了深究环境变量这个问题,下载JDK1.8来折腾一番后发现,仅仅是安装好JDK和JRE,根本用不着配置什么环境变量就可以开发和跑项目了,这是怎么回事?到环境变量配置页查看,会发现在path的值中有个C:\ProgramData\Oracle\Java\javapath路径值生成,如以下图中展示(注:图例一为Win10系统的环境变量配置界面,和Win7有很大不同)——

而在映射的路径文件夹中已经存在了可执行的java.exe,这似乎是说明新版JDK(1.8)在安装的时候就已经自动为我们添加好了环境配置。当博主删除该path映射的路径值C:\ProgramData\Oracle\Java\javapath的时候,集成开发环境中的eclipse就无法正常打开了,但是IDEA依然能正常使用,添加之后eclipse恢复正常。接着将JDK1.8卸载,保留运行环境JRE,这个时候eclipse依然可以正常使用,因为Eclipse比较例外的是它自己内嵌了Java编译器,其作用等同于JDK中的javac,所以eclipse其实只需要依赖JRE就可以做开发并编译运行Java文件的,有了JDK只是为了方便查询源码,而这个时候IDEA少了JDK的支持就无法正常开发使用了。接着卸载JRE,这个时候开发工具肯定是没法使用了,关键是在环境变量的Path值C:\ProgramData\Oracle\Java\javapath也消失了,对应路径下的文件也被删除了,这就说明在安装JRE的时候,是会为我们自动配置好环境变量的。环境变量都没配置就成功的布衣博主实在不甘心,卸载了JDK1.8之后又单独安装了JDK1.7继续尝试,安装完成后Path值并没有自动添加,博主也没有主动的去配置任何环境变量,但是打开Eclipse或者Idea等IDE,依然可以正常开发跑项目。尝试至此,似乎证明了长久以来大家配置环境变量只是思维和行为固化后的自以为是,纯粹是多此一举,对日常开发调试并没有卵用。难道,这么多程序员都在信奉了一个错误的认知而且丝毫不觉得有异?

要搞解开这个疑惑,还是得搞清楚环境变量到底是干什么的,为什么要配置它。所谓环境变量,其实就是操作系统中用来指定操作系统运行环境的一些参数,比如临时文件夹位置和系统文件夹位置等。当要求系统运行一个程序而没有告诉它程序所在的完整路径时,系统除了在当前目录下面寻找此程序外,还应到环境变量的Path中指定的路径值去找。也就是说当执行可执行文件找不到位置的时候,就会去Path中配置的路径去找。因此可以设想如果直接在可执行文件所在文件夹取执行,那不就是找得到吗?为了证明,博主先打开cmd执行编译命令javac,返回不是内部或外部命令,当我们切换到JDK的bin目录C:\Program Files\Java\jdk1.8.0_162\bin路径去执行javac命令的时候,就能够成功执行,好像配置了环境变量一样——

既然可以执行javac,那么我们就在该目录下测试编译一个Java文件。先用记事本编写测试代码 public classTest {public static voidmain(String[] args) { System.out.println("博客园 陈本布衣"); } } ,文件名必须和类名保持一致Test.java,然后我们执行编译命令并运行文件——

可是正常情况下我的Java文件是不可能放在bin目录下的,所以我们接着配置好环境变量,使我们能够在任意目录编译Java文件——

配置环境变量的目的似乎达到了,仅仅是为了不用切换到JDK的bin目录就能执行编译命令的方便,可是,现在都是用集成开发环境如idea或eclipse等开发并编译Java程序,如果不是使用命令行javac的方式来编译Java程序,那么,广大的程序员们,你在搭建开发环境的时候,配置环境变量到底是因为什么?

配置环境变量:How?

欸,本来前文阐述了环境变量的原理后,这里计划该写如何配置了,但是布衣博主在不断尝试之后发现环境变量在Java的开发环境中根本不是必须的配置,所以,这里的How就只能戛然而止了,实在不想多叨叨如何配置那不必要的玩意儿了。当然,或许我前文的尝试和总结很有问题,因为配置了多年环境变量的博主自己一直都还在怀疑上文的尝试是否正确,也诚心希望各路大神指出阐述中的问题,共同来探讨环境变量配置的必要性和可用之处,以免误导他人;

原创博文,转载请注明出处和原文链接,谢谢!

作者:陈本布衣

java环境变量都是什么意思_Java环境变量,真的还有必要配吗?相关推荐

  1. java程序怎么都不是一个_java运行的流程-怎么运行java程序编了一个程序不知道怎么运行郁闷啊后缀文件名是 爱问知识人...

    在初学java编程语言时,痛苦的事莫过于跟着示例一步步做,总是得不到想要的结果,这是很多初学者都会碰到的问题.下面详细教你运行第一个java应用程序(环境windows xp + jdk 6.0): ...

  2. Java所有函数都是动态的_Java中的函数动态调用

    //------------------------------------- //类ArgumentHolder //用于调用参数的封装,实现变长参数及 //不同类型参数的统一形式地传递 //成员变 ...

  3. java 运行环境变量_java 环境变量配置与第一个程序运行

    从开始下载jdk,到运行出java第一个程序 ,花了5天时间 ,不过我相信万事开头难 ,以后会越来越好的 ,加油! jdk的下载: 在oracle官网上即可下载,jdk安装包,下载完以后运行安装 ,路 ...

  4. python的变量需要声明赋值才能使用_Python变量的定义和使用

    任何编程语言都需要处理数据,比如数字.字符串.字符等,我们可以直接使用数据,也可以将数据保存到变量中,方便以后使用. 变量(Variable)可以看成一个小箱子,专门用来"盛装"程 ...

  5. java环境的意义_java环境变量配置的意义

    从大二开始接触Java,之后是断断续续的学习.大三真正开始Java之旅,估计大部分初学者在学Java时被Java的环境变量搞的晕头转向,虽然找到了正确设置环境变量的方式,但其中的原因一知半解,设置压根 ...

  6. java环境变量一闪而过_Java环境变量配置和Tomcat启动时cmd界面一闪而过问题

    Java环境变量配置 计算机 -> 属性 -> 高级系统设置 -> 环境变量 -> 系统变量中配置Java环境变量. 配置JAVA_HOME,属于必配项,如果不配置,直接指定p ...

  7. 进行java环境设置的原因_java环境变量的设置原因

    设置jdk环境变量并不难,但是我们知道为什么要这么设置吗?知其然也要知其所以然. 在把jdk安装到计算机中之后,我们来进行设置使java环境能够使用. 首先右键点我的电脑.打开属性.然后选择" ...

  8. java环境变量大小写_java环境变量配置

    本文借鉴于他人 学习java的第一步就要搭建java的学习环境,首先是要安装JDK,JDK安装好之后,还需要在电脑上配置"JAVA_HOME"."path".& ...

  9. 没有配置java环境变量,为什么我java环境变量都还没有配置都可以运行java程序了...

    为什么我java环境变量都还没有配置都可以运行java程序了 来源:互联网  宽屏版  评论 2012-06-09 01:34:26 分类: 电脑/网络 >> 程序设计 >> ...

最新文章

  1. npm缺少css-loader,/style-compiler,stylus-loader问题,npm没有权限无法全局更新问题【已解决】
  2. 阿里巴巴Java开发规约的IDEA插件使用
  3. 关于socket和 jsp的几个问题
  4. 云计算成IT反“腐”后盾-《中国电子报》2013年5月特刊
  5. 通讯软件通常要哪几个端口_您通常打开几个浏览器标签?
  6. QApplication
  7. 【本地存储】将数据存储到本地 (sessionStorage、vuex)
  8. 计算机的cpu故障,计算机cpu常见故障
  9. android 实现qq动画,Android实现仿QQ登录界面背景动画效果
  10. ce修改面板属性_用CE脚本进行FGO一键修改局内属性
  11. python——今天是第几天
  12. 命令 / Linux / apt remove 和 apt purge 的区别
  13. 中国再生聚酯纤维市场运营现状及投资战略分析报告2022-2028年
  14. 基于脱敏数据,使用huggingface的Transformers预训练模型
  15. 为什么要学习人工智能,人工智能热招的岗位有哪些,工资和学历有哪些关系?
  16. PyTorch深度学习基础之Reduction归约和自动微分操作讲解及实战(附源码 超详细必看)
  17. 粗浅地浏览一下,待明日来嘞,认真去刷!
  18. 推荐系统 | 威尔逊区间法
  19. SQLServer通过sql修改表主键
  20. 【MQTT】Windows:安装MQTT

热门文章

  1. 基於MySQL+PHP的羽毛球費用查询网站设计
  2. sublimText3在ubuntu下的中文支持
  3. anaconda管理环境
  4. anaconda管理不同版本Python
  5. Python中字典(dict)详解
  6. [深度学习-实践]tensorflow_hub简单理解模型的生成与加载
  7. 火狐浏览器设置url编码_关于不同浏览器对URL编码的分析(转)
  8. OpenCV--求取图像多轮廓质心,并于图像上绘制显示质心及其坐标
  9. Virtual Treeview 5 0 0的安装以及入门
  10. ORM(手写简单ORM)