在学习JAVA的过程当中,涉及到多个环境变量(environment variable)的概念,如PATH。正确地配置这些环境变量,是可以顺利学习、开发的前提。而常常出现的问题是:有的学习者可以按照提示一步一步地正确配置,但时间一长就忘了,出现了问题也无从下手。究其缘由,就是对这些概念没有理解,知其然但不知其因此然。下面的内容,就是帮助你们知其因此然。html
环境变量(environment variables)通常是指在操做系统中用来指定操做系统运行环境的一些参数,如:临时文件夹位置和系统文件夹位置等。java
环境变量是在操做系统中一个具备特定名字的对象,它包含了一个或者多个应用程序所将使用到的信息。例如Windows和DOS操做系统中的path环境变量,当要求系统运行一个程序而没有告诉它程序所在的完整路径时,系统除了在当前目录下面寻找此程序外,还应到path中指定的路径去找。用户经过设置环境变量,来更好的运行进程。windows
JAVA的初学者,必需要学会配置PATH环境变量,不然没法编译、运行JAVA程序。那么,为何要配置PATH环境变量呢?PATH环境变量是作什么的呢?咱们从一个常见的问题入手。tomcat
当咱们安装好JAVA后,若没有正确配置PATH环境变量,则在命令行窗口(开始->运行->输入cmd,回车)下运行命令java -version(显示JAVA的版本)命令时,会出现以下的错误提示信息:编辑器
这条错误信息的意思是,你要求运行的“java”这条命令我不认识,不知道是个什么玩意儿。那么究竟这个“java”命令是何方神圣呢?在JDK的安装目录下(个人是D:\Java\jdk1.6.0_24),有一个bin目录。打开此目录,会发现大量的可执行文件,后缀名为exe的文件。其中有一个可执行文件即为java.exe。如今在命令行窗口下把当前目录切换到这个bin目录下(Shift+右键)。工具
在此目录下,运行dir命令,显示当前目录下的全部文件和目录。从显示结果中,咱们能够清楚地看到“java.exe”这个文件。以下图所示:学习
实际上咱们执行“java”命令,就是要运行“java.exe”这个可执行文件(咱们运行其余命令,本质上也是要执行某个程序文件)。咱们如今再来执行 java -version 这条命令试试。在命令行窗口下键入java -version,回车,结果以下图所示:spa
看来此次执行成功了。执行java -?可查看此命令的帮助信息。能够看到它有不少选项,-version只是其中之一。另一种方式是,写出这些可执行文件的完整(绝对)路径(例如:D:\Java\jdk1.8.0_31\bin\java -version),就能够在任何目录下执行了。读者可自行尝试。操作系统
与java命令相似,javac命令目前也能在bin目录下执行,但到其余目录下就只能写出其完整路径了。在学习JAVA的过程当中,咱们常常须要使用javac和java这两条命令来编译、运行咱们的JAVA程序。难道咱们每次运行这两条命令都要先切换到bin目录下吗或写出一长串的绝对路径吗?能不能有一个办法,让咱们可以在任何目录下都能自如地运行这些命令呢?命令行
明白了这些,咱们就把bin目录的完整路径添加到PATH中。在命令行窗口下,可以使用set命令完成此类的任务。直接运行set,会显示系统当前全部环境变量的值,运行set /?,会显示关于此命令的帮助信息。
使用set命令设置环境变量值的格式为:set 环境变量名=环境变量值。咱们可使用命令set path=D:\Java\jdk1.8.0_31\bin将java等程序文件所在的目录添加到PATH环境变量中(Windows下环境变量名不区分大小写,这与UNIX不一样)。可是这样会使PATH的值只有“D:\Java\jdk1.8.0_31\bin”,它预先设定供其余程序使用的值就都被覆盖了。所以,咱们应该把值“D:\Java\jdk1.6.0_24\bin”追加到PATH中。为此,咱们可使用以下命令:
set path=%path%;D:\Java\jdk1.8.0_31\bin
把PATH放在两个百分号之间,指把PATH原有的值取出。其后的分号表示分隔不一样的路径值,以后才是咱们要添加的值。注意,请在英文输入法状态下使用此命令。如今咱们转到任意一个目录下执行java -version命令试试。结果以下图所示:
可见运行彻底成功。可是这种使用set命令的方式设置的环境变量只对当前命令行窗口有效。一旦关闭此窗口,再次运行另外一个命令行窗口时,PATH环境变量仍是原来的值。所以,咱们必须在Windows下修改PATH环境变量。步骤以下:
右击桌面“个人电脑”图标->属性->高级->环境变量,就打开了了设置环境变量的对话框。上面部分是为某个用户设置。Windows设计为可多用户使用一台机器,每人一个帐户。为某个帐户设置的变量只对该用户有效。下面部分是设置系统变量,对系统中的每一个用户有效。如今通常电脑都只有一个用户,即Administrator。所以只须要为此帐户设置便可。找到PATH环境变量,点“编辑”。在“变量值”框内现有值的后面输入英文输入法的分号,而后添加你想添加的值(在这里是D:\Java\jdk1.8.0_31\bin)。一路肯定,OK!
如今再打开一个命令行窗口,输入echo %path%命令查看path的值(或者直接使用path命令亦可)。
如今,咱们能够看到bin目录已被添加到PATH中,再在任何目录下运行java -version命令,都可成功。以下图所示:
其实咱们执行其余命令都是这个原理。举例来讲,当你显示PATH的值时,你会发现第一个值是C:\WINDOWS\system32。在Windows下打开这个目录,你会看到不少可执行文件,它们的名字与咱们经常使用的命令的名字是一致的。也就是说,咱们执行这些命令,实际上系统就是根据PATH的这个值找到了相应的可执行文件,再运行这些文件的结果。如attrib.exe文件
它对应于attrib命令,这是显示/设置文件属性的命令,以下图所示:
如今咱们经过命令set path=(等号右边什么都没有,或随便写点东西)来清除PATH的值,再来运行attrib命令试试。以下图所示:
能够看出,彻底相同的命令,如今已没法执行而报错了。
下面再经过命令set path=c:\windows\system32(Windows下不区分大小写,所以windows与WINDOWS都正确),把attrib.exe文件所在的路径添加到PATH中,再运行试试。以下图所示:
很显然,目前已可以正确运行。另一个常见的例子就是format.com(.com文件是另外一种能够执行的文件),不过此命令是用来格式化的,实验时请当心,不要因为失误而格式化了某个盘。并且,根据上面的描述,在PATH环境变量未正确配置的时候,写出这些文件的绝对路径(完整路径),亦能够正确执行。读者可自行实验(在此声明,因为已事先提醒,所以凡是因为误操做带来的数据丢失,概不负责!)。
咱们如今启动一个命令行窗口,按上述的方法把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放置在两个百分号之间,表示引用这个环境变量的值。这样,当你把tomcat的安装目录换了之后,就只须要修改catalina_home的值,而不须要修改PATH的值了,由于它能够自动计算出新的正确值。
文章出处:艺意
文章参考:NashMaster2011