`
hejiajunsh
  • 浏览: 400996 次
  • 性别: Icon_minigender_1
  • 来自: 天津
社区版块
存档分类
最新评论

Windows下PATH等环境变量详解

阅读更多

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

一、基本原理

     首先看PATH环境变量。

     JAVA的初学者,必须要学会配置PATH环境变量,否则无法编译、运行JAVA程序。那么,为什么要配置PATH环境变量呢?PATH环境变量是做什么的呢?我们从一个常见的问题入手。

     当我们安装好JAVA后,若没有正确配置PATH环境变量,则在命令行窗口(开始->运行->输入cmd,回车)下运行命令java -version(显示JAVA的版本)命令时,会出现如下的错误提示信息:

01

图一

     这条错误信息的意思是,你要求运行的“java”这条命令我不认识,不知道是个什么玩意儿。那么究竟这个“java”命令是何方神圣呢?在JDK的安装目录下(我的是D:\Java\jdk1.6.0_24),有一个bin目录。打开此目录,会发现大量的可执行文件(后缀名为exe的文件。Windows默认隐藏文件后缀名。要显示后缀名,可在当前窗口上方菜单栏里点“工具”菜单->文件夹选项->查看->高级设置->清除“隐藏已知文件类型的扩展名”前面的钩钩->确定)  。其中有一个可执行文件即为java.exe。现在在命令行窗口下把当前目录切换到这个bin目录下。通过如下命令实现:

02图二    

     在此目录下,运行dir命令,显示当前目录下的所有文件和目录。从显示结果中,我们可以清楚地看到“java.exe”这个文件。如下图所示:

03

图三    

     实际上我们执行“java”命令,就是要运行“java.exe”这个可执行文件(我们运行其他命令,本质上也是要执行某个程序文件)。我们现在再来执行“java -version”这条命令试试。在命令行窗口下键入java -version,回车,结果如下图所示:

04图四    

     看来这次执行成功了。命令结果显示当前JAVA的版本是“1.6.0_24”。执行java -?可查看此命令的帮助信息。可以看到它有很多选项,-version只是其中之一。另外一种方式是,写出这些可执行文件的完整(绝对)路径(例如:d:\Java\jdk1.6.0_24\bin\java -version),就可以在任何目录下执行了。读者可自行尝试。

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

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

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

     明白了这些,我们就把bin目录的完整路径添加到PATH中。在命令行窗口下,可使用set命令完成此类的任务。直接运行set,会显示系统当前所有环境变量的值,运行set /?,会显示关于此命令的帮助信息。使用set命令设置环境变量值的格式为:set 环境变量名=环境变量值。我们可以使用命令set path=D:\Java\jdk1.6.0_24\bin将java等程序文件所在的目录添加到PATH环境变量中(Windows下环境变量名不区分大小写,这与UNIX不同)。但是这样会使PATH的值只有“D:\Java\jdk1.6.0_24\bin”,它预先设定供其他程序使用的值就都被覆盖了。因此,我们应该把值“D:\Java\jdk1.6.0_24\bin”追加到PATH中。为此,我们可以使用如下命令:

set path=%path%;D:\Java\jdk1.6.0_24\bin

     把PATH放在两个百分号之间,指把PATH原有的值取出。其后的分号表示分隔不同的路径值,之后才是我们要添加的值。注意,请在英文输入法状态下使用此命令。现在我们转到任意一个目录下执行java -version命令试试。结果如下图所示:

05

图五

     可见运行完全成功。

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

     右击桌面“我的电脑”图标->属性->高级->环境变量,就打开了了设置环境变量的对话框。上面部分是为某个用户设置。Windows设计为可多用户使用一台机器,每人一个账户。为某个账户设置的变量只对该用户有效。下面部分是设置系统变量,对系统中的每个用户有效。现在一般电脑都只有一个用户,即Administrator。因此只需要为此账户设置即可。找到PATH环境变量,点“编辑”。在“变量值”框内现有值的后面输入英文输入法的分号,然后添加你想添加的值(在这里是D:\Java\jdk1.6.0_24\bin)。一路确定,OK!

     现在再打开一个命令行窗口,输入echo %path%命令查看path的值(或者直接使用path命令亦可)。现在,我们可以看到bin目录已被添加到PATH中,再在任何目录下运行java -version命令,均可成功。如下图所示:

06

图六

     其实我们执行其他命令都是这个原理。举例来说,当你显示PATH的值时,你会发现第一个值是C:\WINDOWS\system32。在Windows下打开这个目录,你会看到很多可执行文件,它们的名字与我们常用的命令的名字是一致的。也就是说,我们执行这些命令,实际上系统就是根据PATH的这个值找到了相应的可执行文件,再运行这些文件的结果。如attrib.exe文件,它对应于attrib命令,这是显示/设置文件属性的命令,如下图所示:

07

图七

     现在我们通过命令set path=(等号右边什么都没有,或随便写点东西)来清除PATH的值,再来运行attrib命令试试。如下图所示:

08

图八

     可以看出,完全相同的命令,现在已无法执行而报错了。

     下面再通过命令set path=c:\windows\system32(Windows下不区分大小写,因此windows与WINDOWS都正确),把attrib.exe文件所在的路径添加到PATH中,再运行试试。如下图所示:

09

图九

     很显然,目前已能够正确运行。另外一个常见的例子就是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即可。创建好的批处理文件,你也可以用文本编辑器打开,查看它的“源代码”。

三、关于CATALINA_HOME环境变量的设置(适用于tomcat6/7)

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

10   图十

     这句话的意思就是没有正确设置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的值了,因为它可以自动计算出新的正确值。

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

分享到:
评论

相关推荐

    ant_junitc测试

    说到这里,你可能已经猜到了:为了在任何目录下都能够运行它,我们需要把此bin目录添加到path环境变量中(关于PATH环境变量,读者可参考笔者的博文《Windows下PATH等环境变量详解》)。在“环境变量”窗口中,我们来...

    Windows下Java环境变量配置详解

    中给大家介绍的是关于Windows下JAVA环境变量JAVA_HOME、CLASSPATH、PATH设置的相关资料,文中介绍的还是相对比较详细的,对大家具有一定的参考价值,需要的朋友们下面来一起看看吧。

    Java环境变量详解,JRE,JDK,

    JAVA_HOME改成你自己的JDK的安装路径,CLASSPATH和PATH值不用不用改。 CLASSPATH开始必须是 .; 否则控制台下执行你指定路径的.class文件时找不到。...在默认的PATH中包含了C:\Windows\System32这个路

    NodeJS、NPM安装配置步骤(windows版本) 以及环境变量详解

    (windows的安装msi文件在过程中会直接添加path的系统变量,变量值是你的安装路径,例如“C:\Program Files\nodejs”)。 3、安装完成后可以使用cmd(win+r然后输入cmd进入)测试下是否安装成功。方法:在cmd下输入...

    windows上安装python3教程以及环境变量配置详解

    1.在浏览器搜索python.org,如下图选择第一个 2.进入python官网,选择dowload然后选择windows如下图: ...【4】在系统环境变量处,选择新建,第一项写PATH,第二项填写软件安装的位置,然后一直确定 【5

    Windows下Sqlmap环境安装教程详解

    Sqlmap安装 Sqlmap >> 基于Python的自动化渗透测试工具,安装工具前需要进行Python的环境准备 ...1.2 安装时关于环境变量的设置 在这里需要选择最底下的Add python.exe to path 不然会出现在cmd下运行python弹出windows

    windows下python安装pip方法详解

    鼠标右键我的电脑 -> 属性 -> 高级系统设置 -> 环境变量 -> 编辑PATH -> 在最后面加上我们的Python安装路径 -> 点击确定 注意:Path 路径最后要加上 分号 ;  例如我的路径 C:\Users\pandap\AppData\Local\...

    Android NDK开发之:配置环境的详解

    Windows下的开发环境需要安装以下软件:Java JDK Apache ANT Build SystemAndroid SDKCygwinAndroid NDKEclipse IDE1、安装Java JDKhttp://www.oracle.com/technetwork/java/javase/downloads/index.html配置环境...

    【JavaScript源代码】nodejs管理工具nvm安装过程详解.docx

    下载nvm-setup.zip,nvm-noinstall.zip 点击nvm-setup.exe安装,一路下一步,这里安装到C:\dev\nvm,安装完成后自动配置了环境变量:NVM_HOME,NVM_SYMLINK,也会添加到Path 验证是否安装成功,打开命令行cmd nvm常用的...

    Windows系统下MySQL8.0.21安装教程(图文详解)

    MySQL8.0.21安装教程(Windows系统) 安装建议:尽量不要用.exe进行安装,用压缩包安装,对日后的卸载/版本升级更为方便 ...选择path添加:mysql安装目录下的bin文件夹地址 这里需要注意是否以前有安装过老版本

    HTTP_HOST 和 SERVER_NAME 的区别详解

    查看所有的Server VariablesServerVariables集合检索预定的环境变量意义 今天突然想起每次请求 HTTP_HOST 和 SERVER_NAME 的值总是一样的,干嘛还有用两个名称,它们之间有什么区别呢? 网上也没有一个确定的说法,到...

    windows 64位下MySQL 8.0.15安装教程图文详解

    我们去系统的环境变量的path里添加一个mysql的配置 指向mysql的bin目录   配置初始化的my.ini文件的文件 解压后的目录并没有的my.ini文件,没关系可以自行创建在安装根目录下添加的my.ini(新建文本文件,将文件...

    微信小程序 Linux开发环境设置详解

    下载nwjs sdk压缩包之后解压放到你喜欢的位置,并且设置环境变量,nw可执行文件加入到path变量中。 接下来要去提取微信小程序开发工具的package.nw文件,这是nwjs的项目包文件。找个window机器安装一下小程序开发...

    Python 中的pygame安装与配置教程详解

    安装软件环境及版本说明 ...如果安装python时,没有勾选添加python到环境变量PATH,则需要手动添加 3)验证是否安装+配置环境变量成功 运行CMD,输入命令: python --version 出现版本信息则说明成功

    ionic环境配置及问题详解

    AndroidSDK添加环境变量 在Path系统变量中添加如下配置: %ANDROID_HOME%\platform-tools;%ANDROID_HOME%\tools; 第一次用ionic,发现各种坑。 首先node.js不要使用最新版本,否则会出现各种问题。 一开始用的v8.x...

    MySQL5.7.23解压版安装教程图文详解

    我是windows10的系统,找到环境变量配置位置 添加环境系统变量 MYSQL_HOME D:\Program Files\mysql-5.7.23-winx64 编辑path变量,添加MYSQL_HOME 4.新建my.ini文件,5.7版本没有该文件需要自己新建,内

    Java版水果管理系统源码-thinking-react-native:这是我自己的一些react-native学习足迹和他自己的一些记录

    Java版水果管理系统源码 thinking-react-native This ...环境变量配置: 1、在系统变量中添加:PYTHON_HOME,值:C:\Python27 (这个是自己的安装目录) 2、在系统变量Path中添加两个变量值:%PYTHON_

    MySQL命令行导出导入数据库实例详解

    (或者直接将windows的环境变量path中添加该目录)  2,导出数据库:mysqldump -u 用户名 -p 数据库名 > 导出的文件名 如我输入的命令行:mysqldump -u lmapp -p lmapp -P 3308 > lmapp.sql (输入后会让你输入进入...

    java jdk8 学习笔记

    4.echo %path% 是系统环境变量附加用户变量,set path="路径” %path%>系统变量>用户变量,只有通过“高级系统设置”方式则可以长久保存。 5.java指令的目的是启动jvm,然后执行指定的执行文件(.class)。windows...

    Win10配置redis服务实现过程详解

    一,Windows安装: ... 装Redis-x64-3.2.100.msi,...选择“添加Redis目录到环境变量PATH中”,这样方便系统自动识别Redis执行文件在哪里。 端口号可保持默认的6379,并选择防火墙例外,从而保证外部可以正常访问Redis

Global site tag (gtag.js) - Google Analytics