Java配置环境变量及其意义

2016/10/29 22:02
阅读数 234

        在学习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命令

 

展开阅读全文
打赏
0
0 收藏
分享
加载中
维他ViTa博主
Java9需要配置JAVA_HOME和JRE_HOME
2018/03/19 15:38
回复
举报
更多评论
打赏
1 评论
0 收藏
0
分享
返回顶部
顶部