为什么要配置java环境变量
作为年龄上堪称老鸟而技术上却是菜鸟的老菜鸟,为了祖国的编程事业,不惜拿出一个月工资,淘了一台配置稍高的二手笔记本,打算与老笔记本中的撸啊撸片彻底说再见,誓要在新机种开启一番撸啊撸的新事业。当然,撸代码离不开基本的环境搭建,每次新机上手都要百度一堆杂乱的似是而非的环境搭建教程,才勉强把开发环境搭建起来,时间耗费不少,但终是拾人牙慧,生搬硬套,从未能理解深层原理,将其内化吸收形成自己的技术积累;而环境搭建虽然基础,但编程界多少前辈大牛都是从此开始的,千万行代码的撸出也都依赖于此,所以,花时间总结一下,思考一番,确有必要。今天先来讲讲最最基本的环境变量,博主度娘无数,收获不小,现分两个方面来探究环境变量的问题:一是为什么要配置,二是如何配置。
配置环境变量: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环境变量的更多相关文章
- Ubuntu中配置Java环境变量时,出现command not found问题解决记录
百度出Ubuntu中配置Java环境变量时,在利用sudo gedit /etc/profile 对profile编辑后, 在terminal中输入 sudo source /etc/profile, ...
- linux配置java环境变量(详细)
linux配置java环境变量(详细) 本文完全引用自: http://www.cnblogs.com/samcn/archive/2011/03/16/1986248.html 一. 解压安装jdk ...
- Ubuntu16.04下面配置java环境变量
我在ubuntu 16.04下面配置java环境变量的时候,开始在网上查信息的时候,没太注意ubuntu的版本,结果在.bashrc下面设置,在.profile下面设置,都不成功, 后面才想起来搜索u ...
- linux配置java环境变量
linux配置java环境变量(详细) 一. 解压安装jdk 在shell终端下进入jdk-6u14-linux-i586.bin文件所在目录, 执行命令 ./jdk-6u14-linux-i586. ...
- ubuntu下配置java环境变量
1.官网下载linux对应的jdk安装包tar.gz 2.filezilla上传tar.gz到对应ubuntu目录test下(见上一篇) 3.解压:tar -zcvf XXX.tar.gz 4.修改解 ...
- linux配置java环境变量(转)
linux配置java环境变量(详细) 一. 解压安装jdk 在shell终端下进入jdk-6u14-linux-i586.bin文件所在目录, 执行命令 ./jdk-6u14-linux-i586. ...
- [知了堂学习笔记]_牵线Eclipse和Tomcat第一篇 —— 配置Java环境变量&&安装eclipse
一.先给他们提供一个"浪漫的"环境,比如传说中的"鹊桥"--java环境变量.哈哈! 配置java环境变量. 下载jdk,根据自己电脑的版本和操作位数选择不同的 ...
- 第一天学JAVA,下载JDK,配置JAVA环境变量!!!
步骤一:下载JDK https://www.oracle.com 我们首先进入到这个网站下载我们运行JAVA的所必须的JDK 进入到这个网站按照图示进入到下一个页面 因为刚学JAVA,我们的JDK版本 ...
- win10配置java环境变量,解决javac不是内部或外部命令等问题
win10配置java环境变量,解决javac不是内部或外部命令等问题 https://www.cnblogs.com/qianji/p/6402690.html
- linux配置java环境变量jdk jre(详细)【转】
linux配置java环境变量(详细) 本文完全引用自: http://www.cnblogs.com/samcn/archive/2011/03/16/1986248.html 一. 解压安装jdk ...
随机推荐
- 前端 JS 之 AJAX 简介及使用
概述 AJAX 是一个缩写,它的全名是 Asynchronous JavaScript and XML,意思就是异步 JavaScript 和 XML,即用JavaScript执行异步网络请求. AJ ...
- Swapon交换空间: 缓解真实物理内存的压力
交换空间: 缓解真实物理内存的压力 交换空间: 缓解真实物理内存的压力 由硬盘的空间来组成 – 交换分区:以空闲分区充当的交换空间 1.格式化交换分区 [root@server0 /]# mkswap ...
- 基于Colab Pro & Google Drive的Kaggle实战
原文:https://hippocampus-garden.com/kaggle_colab/ 原文标题:How to Kaggle with Colab Pro & Google Drive ...
- Spring Cloud Data Flow整合UAA之使用LDAP进行账号管理
我最新最全的文章都在南瓜慢说 www.pkslow.com,欢迎大家来喝茶! 1 前言 Spring Cloud Data Flow整合UAA的文章已经写了两篇,之前的方案是把用户信息保存在数据库中: ...
- ClickHouse学习系列之四【副本&分片部署说明】
背景 以前介绍过ClickHouse相关的系列文章,现在继续说明.本文开始说明ClickHouse的副本与分片,和其他数据库一样,ClickHouse也会出现单节点故障和单节点资源到达上限的情况.所以 ...
- 聊聊 Feign 的实现原理
What is Feign? Feign 是⼀个 HTTP 请求的轻量级客户端框架.通过 接口 + 注解的方式发起 HTTP 请求调用,面向接口编程,而不是像 Java 中通过封装 HTTP 请求报文 ...
- .net core Redis消息队列中间件【InitQ】
前言 这是一篇拖更很久的博客,不知不觉InitQ在nuget下载量已经过15K了,奈何胸无点墨也不晓得怎么写(懒),随便在github上挂了个md,现在好好唠唠如何在redis里使用队列 队列缓存分布 ...
- 18、通过yum命令只下载rpm包不安装
18.1.说明: 经常遇到服务器没有网络的情况下部署环境,或者创建自己的 yum 仓库等,这时就需要下载 rpm 包. 18.2.方法一,yumdownloader(推荐): 如果只想通过 yum 下 ...
- Tiling 简单递推+大数
Tiling c[0]=1,c[1]=1,c[2]=3; c[n]=c[n-1]+c[n-2]*2; 0<=n<=250. 大数加法 java time :313ms 1 ...
- CRM客户管理软件如何帮助销售?
对现代企业来说,销售团队的作用是举足轻重的.这与企业的利益密切相关,因此提高企业的销售绩效是企业的首要目标.CRM客户管理软件能够帮助企业做到以客户为中心,构建及改善客户关系,帮助企业优化业务流程,实 ...