在学习Java的过程当中,涉及到多个环境变量(environment variable)的概念,如PATH。正确地配置这些环境变量是可以顺利学习、开发的前提。而常常出现的问题是:有的学习者可以按照提示一步一步地正确配置,但时间一长就忘了,出现了问题也无从下手。究其缘由,就是对这些概念没有理解,知其然但不知其因此然。下面的内容,就是帮助你们知其因此然。java
未设置环境变量,只有在jdk中的bin目录下才能够运行java命令。windows
安装JDK以后,若是不配置PATH环境变量,没法编译和运行Java程序。tomcat
在命令行直接输入"java -version",会出现错误提示信息:“ 'java'不是内部或外部命令,也不是可运行程序或批处理文件 ”编辑器
这条错误信息的意思是:你要求运行的“java”这条命令我不认识,不知道是个什么玩意儿。工具
那当咱们打开JDK的安装目录下bin目录,在此目录下运行”dir“命令显示该目录下所有文件,便可发现java.exe学习
该目录下再次运行"java -version",命令运行成功并显示java版本信息。spa
只有写出java.exe的完整路径才能运行java命令?操作系统
与java命令相似,javac命令目前也能在bin目录下执行,但到其余目录下就只能写出其完整路径了。在学习Java的过程当中,咱们常常须要使用javac和java这两条命令来编译、运行咱们的JAVA程序。难道咱们每次运行这两条命令都要先切换到bin目录下吗或写出一长串的绝对路径吗?能不能有一个办法,让咱们可以在任何目录下都能自如地运行这些命令呢?命令行
解决的办法就在于PATH环境变量。设计
PATH是路径的意思,PATH环境变量中存放的值,就是一连串的路径。不一样的路径之间,用英文的分号(;)分隔开。系统执行用户命令时,若用户未给出绝对路径,则首先在当前目录下寻找相应的可执行文件、批处理文件(另一种能够执行的文件)等。若找不到,再依次在PATH保存的这些路径中寻找相应的可执行的程序文件。系统就以第一次找到的为准;若搜寻完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便可。建立好的批处理文件,你也能够用文本编辑器打开,查看它的源代码。
博主未执行此操做,但有助于对环境变量加深理解
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) 意义