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

配置环境变量: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. Android 小知识点笔记

    获取 view 的位置 View.getLocationInWindow(int[] location) 一个控件在其父窗口中的坐标位置 View.getLocationOnScreen(int[] ...

  2. IDA反汇编EXE添加一个启动时的消息框

    IDA反汇编EXE添加一个启动时的消息框 上一篇文章介绍了用OD反汇编EXE添加一个启动时的消息框,这篇文章也是实现同样的效果,这边主要的思路还是将其反汇编得到汇编代码后,然后手动修改他的逻辑首先跳转 ...

  3. 【NX二次开发】UF_CSYS_map_point()函数,绝对坐标,工作坐标,部件之间坐标转换。

    UF_CSYS_map_point用来变换点的坐标,比较简单且实用.例如工作坐标系与绝对坐标系转换,一个部件的坐标与另一个部件坐标系之间的转换.下面的例子是在三个坐标下创建三个点相对坐标为{10,50 ...

  4. 1.5w字 + 24张图肝翻 TCP。

    TCP 是一种面向连接的单播协议,在 TCP 中,并不存在多播.广播的这种行为,因为 TCP 报文段中能明确发送方和接受方的 IP 地址. 在发送数据前,相互通信的双方(即发送方和接受方)需要建立一条 ...

  5. linux下的对拍程序

    在比赛中我们通常会先打暴力 正解的正确与否,如果数据过大,我们就要用到对拍程序 1 #include<bits/stdc++.h> 2 using namespace std; 3 int ...

  6. Hdoop

    优势:1.低成本  2.高扩展 3.成熟的生态圈 1.安装虚拟机 vi /etc/profile

  7. 记Aspose.Word的使用中出现的问题

    最近实现一个功能,具体需求就是把数据库中的内容转换成word文档,文档中需要包含标题.目录以及表格信息. 这里我使用的是Aspose.Word类,这是一个很强大的文档操作工具包,实现了所有操作文档的所 ...

  8. AJAX异步原理与实现

    面试时问到了这个问题,说实话我还是不理解的,只是单单会使用.所以今天我看一下,自己了解下. 看了网上前辈们写的资料,我自己总结归纳ajax的原理和流程如下: 1.AJAX创建异步对象XMLHttpRe ...

  9. 看CarbonData如何用四招助力Apache Spark

    摘要:CarbonData 在 Apache Spark 和存储系统之间起到中介服务的作用,为 Spark 提供的4个重要功能. 本文分享自华为云社区<Make Apache Spark bet ...

  10. python安装、卸载包的方法

    anaconda包管理器 conda命令[1] 环境管理 conda info -e # 查看当前已安装的环境 conda create -n py27 python=2.7 # 添加2.7版本的Py ...