java中JAVA_HOME、PATH及CLASSPATH解析(转载/整理)
转自详解Javahome 与 Path 与ClassPath的含义 (转)
1、首先搞明白内部命令与外部命令的区别 在学习编程过程中经常遇到这样的概念: 内部命令 启动后是常住内存的。 用dos的时候内存都比较小,非常贵,而内部命令启动后是常住内存的。 外部命令 内部直接打就可以执行,外部得进到命令所在的目录或者设置环境变量才可以执行. 在java开发中设置的环境变量就解决这个问题的
2、环境变量的含义(注意:java环境变量设置不分大小写)
1、java_home(不分大小写),其实这是保存你的jdk安装的路径, (这主要是在路径设置时,使其更为直观和方便,使用%%可以实现对其的逆解析) 例如:D:\Java\jdk1.5.0_05
2、Path:外部命令搜索路径(它与ClassPath不同,主要提供的是系统命令执行工具的路径,即用于执行命令的.EXE程序,如java、javac,一般不轻易改变) 例如:D:\Java\jdk1.5.0_05\bin 例如:%JAVA_HOME%\BIN; 当你改变javahome时却不必影响到path你设java_home时不用经常改变path,java_home在path里只是一个相对路径 当你重装jdk的时候只需要修改一下 java_home 不必修改path
3、CLASSPATH:类资源位置搜索路径(这是命令执行工具要执行的类文件的地址,java会首先在当前目录Lib下寻找(一般开始就设定了的),如果未找到,则会到CLASSPATH指定的目录下进行寻找。由于是要执行的。class文件,所以其经常要变化,在使用Eclipse等IDE时,由系统自动的根据其位置进行配置。在非IDE方式下,则需要进行手动的配置。)
CLASSPATH: .;D:\jdk1.5.0\lib\tools.jar;D:\jdk1.5.0\jre\lib\rt.jar; 注意细节你的系统可能已经有其他的软件设置了path:
如果未配置path路径,指明java这个命令工具的所在地,则其将无法被找到。
此处可以采用
1、在“我的电脑”属性中配置系统环境变量
2、在控制台中临时配置两种方式(每次都要重新敲入)
一般来说,PATH变量的设置一般不会轻易变化,为了节省精力,一边采用在系统环境变量中配置,以避免重复敲入。
而CLASSPATH变化较大(资源文件的存放),一般会设置一个默认的系统变量,但是在执行命令工具之前,一般要用第2种方式对其进行重新的配置。
1、PATH,这个是给WINDOWS操作系统用的,告诉命令行里,执行的命令行工具在那里,比如java,javac这都是命令行工具,你在运行里随便敲一个命令,操作系统怎么就知道你这个命令对应的程序在什么地方,就是通过PATH知道的,你编写JAVA程序的时候,需要编译你的代码,执行编译后的代码,用JAVA和JAVAC这2个工具,那么就必须告诉操作系统,这2个工具放在什么地方。
2、JAVA_HOME,是告诉操作系统,JAVAC和JAVA的具体位置的,因为你安装JAVA的路径可能比较长,不方便在PATH里面写,所以就等于是声明一个简写。
例如:你的jdk安装路径为 D:\Java\jdk1.5.0_05 那么 java_home = D:\Java\jdk1.5.0_05; path = :%java_home%\bin;
3、CLASSPATH,是给JAVAC和JAVA用的,告诉他们,你写的JAVA类,是放在什么地方的。
4、关于Java jdk/bin 目录下的类包 tools.jar 和 dt.jar 的说明,转自http://blog.csdn.net/rockstar541/article/details/7459359
网上的大部分解释是这样的:dt.jar是关于运行环境的类库,主要是swing的包;tools.jar是关于一些工具的类库。对于后者我赞同,tools.jar中主要是jdk工具,包括javac,java,javap,javadoc等。javac,java,javadoc,很多都熟悉。javap,是java printer的缩写,是jdk自带的一个反编译工具。不过把dt.jar解释成关于运行环境的类库,我是百思不得其解。所谓的运行环境是什么?难道是JRE?本文也希望高手可以给我一个解释。下面是我自己整理的关于dt.jar的资料: 首先看一下SUN对于dt.jar的定义:Also includes dt.jar, the DesignTime archive of BeanInfo files that tell interactive development environments (IDE's) how to display the Java components and how to let the developer customize them for the application。中文翻译过来就是:dt.jar是BeanInfo文件的DesignTime归档,BeanInfo文件用来告诉集成开发环境(IDE)如何显示Java组件还有如何让开发人员根据应用程序自定义它们。这段文字中提到了几个关键字:DesignTime,BeanInfo,IDE,Java components。其实dt.jar就是DesignTime Archive的缩写。那么何为DesignTime。 何为DesignTime?翻译过来就是设计时。其实了解JavaBean的人都知道design time和runtime(运行时)这两个术语的含义。设计时(DesignTIme)是指在开发环境中通过添加控件,设置控件或窗体属性等方法,建立应用程序的时间。与此相对应的运行时(RunTIme)是指可以象用户那样与应用程序交互作用的时间。那么现在再理解一下上面的翻译,其实dt.jar包含了swing控件中的BeanInfo,而IDE的GUI Designer需要这些信息。那让我们看一下dt.jar中到底有什么?下面是一张dt.jar下面的内容截图: