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

配置环境变量: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/MyEclipse就无法正常打开了,提示需要JDK或JRE,但是IDEA依然能正常使用,恢复之后Eclipse/MyEclipse能够正常使用。接着将JDK1.8卸载,仅保留运行环境JRE,这个时候IDEA少了JDK的支持就无法正常开发使用了,而Eclipse/MyEclipse却依然可以正常使用,这是因为Eclipse/MyEclipse比较例外的是它自己内嵌了Java编译器,对javac没有任何依赖关系,所以Eclipse/Myeclipse其实只需要依赖JRE就可以做开发并编译运行Java文件的,有了JDK只是为了方便查询源码——其实我们不用安装JDK同样可以查看源码,你只要我们的源码包放在任意路径,然后在设置中绑定源码包就可以了,如下图——

  接着卸载JRE,这个时候开发工具肯定是没法使用了,关键是在环境变量的Path值C:\ProgramData\Oracle\Java\javapath也消失了,对应路径下的文件也被删除了,这就说明在安装JRE的时候,是会为我们自动配置好环境变量的。环境变量都没配置就成功的布衣博主实在不甘心,卸载了JDK1.8之后又单独安装了JDK1.7继续尝试,安装完成后Path值并没有自动添加,博主也没有主动的去配置任何环境变量,但是打开Eclipse或者Idea等IDE,依然可以正常开发跑项目。尝试至此,似乎证明了长久以来大家配置环境变量只是思维和行为固化后的自以为是,纯粹是多此一举,对日常开发调试并没有卵用。难道,这么多程序员都在信奉了一个错误的认知而且丝毫不觉得有异?

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

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

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

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

配置环境变量:How?

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

作者:陈本布衣

    

为什么要配置java环境变量的更多相关文章

  1. Ubuntu中配置Java环境变量时,出现command not found问题解决记录

    百度出Ubuntu中配置Java环境变量时,在利用sudo gedit /etc/profile 对profile编辑后, 在terminal中输入 sudo source /etc/profile, ...

  2. linux配置java环境变量(详细)

    linux配置java环境变量(详细) 本文完全引用自: http://www.cnblogs.com/samcn/archive/2011/03/16/1986248.html 一. 解压安装jdk ...

  3. Ubuntu16.04下面配置java环境变量

    我在ubuntu 16.04下面配置java环境变量的时候,开始在网上查信息的时候,没太注意ubuntu的版本,结果在.bashrc下面设置,在.profile下面设置,都不成功, 后面才想起来搜索u ...

  4. linux配置java环境变量

    linux配置java环境变量(详细) 一. 解压安装jdk 在shell终端下进入jdk-6u14-linux-i586.bin文件所在目录, 执行命令 ./jdk-6u14-linux-i586. ...

  5. ubuntu下配置java环境变量

    1.官网下载linux对应的jdk安装包tar.gz 2.filezilla上传tar.gz到对应ubuntu目录test下(见上一篇) 3.解压:tar -zcvf XXX.tar.gz 4.修改解 ...

  6. linux配置java环境变量(转)

    linux配置java环境变量(详细) 一. 解压安装jdk 在shell终端下进入jdk-6u14-linux-i586.bin文件所在目录, 执行命令 ./jdk-6u14-linux-i586. ...

  7. [知了堂学习笔记]_牵线Eclipse和Tomcat第一篇 —— 配置Java环境变量&&安装eclipse

    一.先给他们提供一个"浪漫的"环境,比如传说中的"鹊桥"--java环境变量.哈哈! 配置java环境变量. 下载jdk,根据自己电脑的版本和操作位数选择不同的 ...

  8. 第一天学JAVA,下载JDK,配置JAVA环境变量!!!

    步骤一:下载JDK https://www.oracle.com 我们首先进入到这个网站下载我们运行JAVA的所必须的JDK 进入到这个网站按照图示进入到下一个页面 因为刚学JAVA,我们的JDK版本 ...

  9. win10配置java环境变量,解决javac不是内部或外部命令等问题

    win10配置java环境变量,解决javac不是内部或外部命令等问题 https://www.cnblogs.com/qianji/p/6402690.html

  10. linux配置java环境变量jdk jre(详细)【转】

    linux配置java环境变量(详细) 本文完全引用自: http://www.cnblogs.com/samcn/archive/2011/03/16/1986248.html 一. 解压安装jdk ...

随机推荐

  1. STS或eclipse中导入新项目出现红色感叹号红色叉叉的问题

    maven项目 原因: jar包缺失 没有正确配置Maven仓库 解决: Window->Preferences->Maven->Installations->Add 添加你的 ...

  2. 屏蔽国内app开屏广告接口的记录

    脉脉: im-x.jd.com api.taou.com 虎扑: goblin.hupu.com 知乎(屏蔽此接口后,进入知乎会报一次错误,不影响正常使用) api.zhihu.com 豆瓣: api ...

  3. golang 用defer 捕获error 需小心

    有时一个函数内需要根据最后是否出错,决定是否执行某个操作.这时候如果函数的分支又比较多,就会比较麻烦了. defer 处理这个情况刚好合适 func main() { var err error by ...

  4. DL基础补全计划(一)---线性回归及示例(Pytorch,平方损失)

    PS:要转载请注明出处,本人版权所有. PS: 这个只是基于<我自己>的理解, 如果和你的原则及想法相冲突,请谅解,勿喷. 前置说明   本文作为本人csdn blog的主站的备份.(Bl ...

  5. drf-序列化器serializer

    目录 一.序列化器-serializer 二.序列化器的使用 简单使用 高级使用 source **SerializerMethodField( ) ** 通用参数 三.反序列化数据校验 字段属性 局 ...

  6. 常见DDoS攻击

    导航: 这里将一个案例事项按照流程进行了整合,这样观察起来比较清晰.部分资料来自于Cloudflare 1.DDoS介绍 2.常用DDoS攻击 3.DDoS防护方式以及产品 4.Cloudflare ...

  7. 线上BUG:MySQL死锁分析实战

    原文链接:线上BUG:MySQL死锁分析实战 1 线上告警 我们不需要关注截图中得其他信息,只要能看到打印得org.springframework.dao.DeadlockLoserDataAcces ...

  8. 14、oracle sql语法

    14.0.注释: 1.单行注释:-- 2.多行注释:/* */ 14.1.sqlplus中的set指令: 1.设置每行显示的数据长度: SET LINESIZE 500; #有效范围是1-32767, ...

  9. 【luogu P3807】【模板】卢卡斯定理/Lucas 定理(含 Lucas 定理证明)

    [模板]卢卡斯定理/Lucas 定理 题目链接:luogu P3807 题目大意 求 C(n,n+m)%p 的值. p 保证是质数. 思路 Lucas 定理内容 对于非负整数 \(n\),\(m\), ...

  10. 『心善渊』Selenium3.0基础 — 19、使用Selenium操作文件的上传和下载

    目录 1.Selenium实现文件上传 (1)页面中的文件上传说明 (2)文件上传示例 (3)总结 2.Selenium实现文件下载 (1)Firefox浏览器文件下载 1)操作步骤: 2)文件下载示 ...