文档章节

Java配置环境变量及其意义

维他ViTa
 维他ViTa
发布于 2016/10/29 22:02
字数 2214
阅读 77
收藏 0

        在学习Java的过程中,涉及到多个环境变量(environment variable)的概念,如PATH。正确地配置这些环境变量是能够顺利学习、开发的前提。而经常出现的问题是:有的学习者能够按照提示一步一步地正确配置,但时间一长就忘了,出现了问题也无从下手。究其原因,就是对这些概念没有理解,知其然但不知其所以然。下面的内容,就是帮助大家知其所以然。

一、基本原理

1.引例

未设置环境变量,只有在jdk中的bin目录下才可以运行java命令。

        安装JDK之后,如果不配置PATH环境变量,无法编译和运行Java程序。

        在命令行直接输入"java -version",会出现错误提示信息:“ 'java'不是内部或外部命令,也不是可运行程序或批处理文件 ”

        这条错误信息的意思是:你要求运行的“java”这条命令我不认识,不知道是个什么玩意儿。

        那当我们打开JDK的安装目录下bin目录,在此目录下运行”dir“命令显示该目录下全部文件,即可发现java.exe

        该目录下再次运行"java -version",命令运行成功并显示java版本信息。

2.问题提出

只有写出java.exe的完整路径才能运行java命令?

        与java命令类似,javac命令目前也能在bin目录下执行,但到其他目录下就只能写出其完整路径了。在学习Java的过程中,我们经常需要使用javac和java这两条命令来编译、运行我们的JAVA程序。难道我们每次运行这两条命令都要先切换到bin目录下吗或写出一长串的绝对路径吗?能不能有一个办法,让我们能够在任何目录下都能自如地运行这些命令呢?

3.解决方法

解决的办法就在于PATH环境变量。

        PATH是路径的意思,PATH环境变量中存放的值,就是一连串的路径。不同的路径之间,用英文的分号(;)分隔开。系统执行用户命令时,若用户未给出绝对路径,则首先在当前目录下寻找相应的可执行文件、批处理文件(另外一种可以执行的文件)等。若找不到,再依次在PATH保存的这些路径中寻找相应的可执行的程序文件。系统就以第一次找到的为准;若搜寻完PATH保存的所有路径都未找到,则会显示类似前面的错误信息。

4.设置PATH

1) 通过命令行设置

set命令设置环境变量格式:set 环境变量名 = 环境变量值

set PATH = D:\Java\jdk1.8.0_101\bin

注意:这样会使PATH只有”D:\Java\jdk1.8.0_101\bin“,其他的值就会被覆盖

因此,我们应该把值“D:\Java\jdk1.8.0_101\bin”追加到PATH中

set PATH = %PATH%;D:\Java\jdk1.8.0_101\bin

把PATH放在两个百分号之间,指把PATH原有的值取出。其后的分号表示分隔不同的路径值,之后才是我们要添加的值。

注意:这种使用set命令的方式设置的环境变量只对当前命令行窗口有效。一旦关闭此窗口,再次运行另一个命令行窗口时,PATH环境变量还是原来的值。 因此,我们必须在Windows下修改PATH环境变量。

2) 通过“属性”添加

右键点击”我的电脑“,依次选择进入”属性“->”高级系统设置“->”环境变量“,编辑PATH值,添加;D:\Java\jdk1.8.0_101\bin

//注意分号

;D:\Java\jdk1.8.0_101\bin

点击确定,添加成功

二、名词释义

        我们现在启动一个命令行窗口,按上述的方法把PATH的值全部清除,然后再运行dir、cd等命令。出乎我们意料的是,它们仍然能够正确执行。这又是什么原因呢?

        报告错误的信息提到了内部命令、外部命令和批处理文件,那什么使外部命令和内部命令呢?

内部命令和外部命令

        内部命令和外部命令是DOS(disk operating system,微软早期基于命令行的操作系统)时代的概念,百度百科的解释是:内部命令是随每次启动的COMMAND_COM装入并常驻内存,而外部命令是一条单独的可执行文件。粗略地讲,所谓内部命令就是最核心、使用最多的命令。为了提高响应速度,系统一启动,这些命令就被加载到内存,因此可以迅速、直接地执行;而外部命令由于使用相对较少,就不预先加载到内存,当用户使用时,再到硬盘上(c:\windows\system32)找相应的可执行文件,然后加载到内存执行。像dir、cd等都是内部命令,而诸如attrib、format等都是外部命令。尽管DOS的时代早已成为了历史,但某些操作却必须在命令行模式下完成,对专业人士来说更是如此。因此,Windows产品一直保留着命令行模式这个工具。

批处理文件

        另外一个概念就是批处理文件(后缀名为.bat,来源于批量的英语单词batch),它是另外一种可以执行的文件。简单地说,批处理文件包含了很多DOS命令。文件执行时,就一条一条地执行这些命令。不一定顺序执行,像通用的程序设计语言一样,它也有自己的流程控制。批处理文件创建很简单:用任何一个文本编辑器(如Windows的记事本)创建一个文本文件,然后把后缀名改为.bat即可。创建好的批处理文件,你也可以用文本编辑器打开,查看它的源代码。

三、CATALINA_HOME环境变量

博主未执行此操作,但有助于对环境变量加深理解

        Tomcat是一个免费开源的Servlet/JSP容器,深受广大Java初学者喜爱。这其中需要设置CATALINA_HOME环境变量,值为tomcat安装目录(我的是d:\tomcat7),否则会出现错误信息:没有正确设置CATALINA_HOME环境变量,而此变量是运行Tomcat所必须的。

        而当你不理会这个信息,在命令行窗口把当前目录切换到tomcat安装目录下的bin目录下,再执行批处理文件startup.bat来启动tomcat时,发现也可以成功。难道现在不需要CATALINA_HOME环境变量了吗?

        实际上,在startup.bat中,首先判断CATALINA_HOME是否为空。若为空,就把当前目录设为CATALINA_HOME的值。然后查找CATALINA_HOME所指示的目录下是否有个bin目录,此bin目录下是否有个叫做catalina.bat的批处理文件(此文件负责启动tomcat)。若没有,则把当前目录的父目录设为CATALINA_HOME的值,再重复上述的查找。若仍失败,就报错。

        因此,当你在tomcat安装目录下的bin目录下运行startup.bat文件时,它就会按照上面所说的第二种方式自动正确设置CATALINA_HOME的值,因为catalina.bat文件就在tomcat安装目录下的bin目录里。

        虽然在此种情况下能正确运行,但还是建议你正确设置CATALINA_HOME环境变量。与PATH不同的是,PATH系统本身就有,而CATALINA_HOME需要你自己新建环境变量。

        为了能够在任何目录下都能运行tomcat安装目录下bin目录里的批处理文件,如startup.bat,可把此目录添加到PATH环境变量中(我的是d:\tomcat7\bin)。

        为了提高灵活性,可在PATH环境变量的最后添加上%catalina_home%\bin(与前一个值之间不要忘了用英文的分号隔开)。把catalina_home放置在两个百分号之间,表示引用这个环境变量的值(配置Java中JAVA_HOME环境变量同理)。这样,当你把tomcat的安装目录换了以后,就只需要修改catalina_home的值,而不需要修改PATH的值了,因为它可以自动计算出新的正确值

(适用于tomcat6/7)

 

———————————————————————————————————————————————

Java环境变量配置

    1) 需配置3个环境变量

变量名:JAVA_HOME
变量值:C:\Program Files\Java\jdk1.8.0_101
变量名:CLASSPATH
变量值:.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;
变量名:PATH
变量值:%JAVA_HOME%\bin

    2) 意义

  • JAVA_HOME:指明JDK的安装路径
  • CLASSPATH:指明Java虚拟机要装载类的路径
  • PATH:指明系统可以在任何路径下识别Java命令

 

本文转载自:http://legend2011.blog.51cto.com/3018495/553255

维他ViTa
粉丝 13
博文 145
码字总数 45736
作品 0
深圳
程序员
私信 提问
加载中

评论(1)

维他ViTa
维他ViTa
Java9需要配置JAVA_HOME和JRE_HOME
关于mvn install命令执行报错问题

首先这个报错,通常要么是依赖问题,比如模块之间的依赖传递问题,通常报这种错误会在控制台提示。 或者是比如子工程分为test-entity、test-dao、test-service、test-web三者之间依赖传递,w...

youcongtech
2018/07/29
0
0
Linux中环境变量文件及配置

一、环境变量文件介绍 转自:http://blog.csdn.net/cscmaker/article/details/7261921 Linux中环境变量包括系统级和用户级,系统级的环境变量是每个登录到系统的用户都要读取的系统变量,而用...

shezjl
2015/08/11
0
0
Linux系统下JDK的安装及其配置方法介绍

一、安装JDK 从sun网站上直接下载JDK:http://java.sun.com/j2se/1.4.2/download.html 提供了两个下载: 1、RPM in self-extracting file (j2sdk-1_4_2_04-linux-i586.bin, 32.77 MB) 这个是......

范堡
2009/05/07
335
0
Windows下配置JDK的环境变量

Windows下配置JDK的环境变量 一、环境准备 Windows10 jdk-9.0.1 二、下载并安装JDK 到Java的官网下载JDK安装包,地址:http://www.oracle.com/technetwork/java/javase/downloads/index.htm...

优惠券发放
2018/04/29
0
0
在CentOS 6.9中搭建Hadoop

准备工作 配置 java 环境变量 在 ~/.bash_profile 中配置 tar -zxvf jdk-8uXXX-linux-x64.tar.gz export JAVAHOME=/解压目录/jak1.8.0xxx export PATH=$PATH:$JAVA_HOME/bin 修改后执行 sour......

自东土大唐而来
2017/11/21
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Jenkins系列_插件安装及报错处理

进入Jenkins之后我们可以进行插件的安装,插件管理位于以下模块: 发现上面报了一堆错误,是因为插件的依赖没有安装好,那么这一节,就先把这些错误解决掉吧。解决完成后,也就基本会使用插件...

shzwork
今天
2
0
mysql mysql的所有查询语句和聚合函数(整理一下,忘记了可以随时看看)

查询所有字段 select * from 表名; 查询自定字段 select 字段名 from 表名; 查询指定数据 select * from 表名 where 条件; 带关键字IN的查询 select * from 表名 where 条件 [not] in(元素...

edison_kwok
昨天
9
0
多线程同时加载缓存实现

import com.google.common.cache.Cache;import com.google.common.cache.CacheBuilder;import java.util.concurrent.ExecutionException;import java.util.concurrent.ExecutorServi......

暗中观察
昨天
3
0
利用VisualVM 内存查看

准备工作,建几个测试类。等下就是要查看这几个类里面的属性 package visualvm;public class MultiObject { private String str; private int i; MultiObject(String str...

冷基
昨天
2
0
组装一台工作游戏两用机

一、配置清单如下: 分类 项目 价格(元) 主板 华硕(ASUS)TUF Z370-PLUS GAMING II 电竞特工 Z370二代 支持9代CPU 1049 CPU 英特尔(Intel) i7 8700K 酷睿六核 盒装CPU处理器 2640 风扇 九...

mbzhong
昨天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部