path和classpath

来源:互联网 发布:期货交易策略编程 编辑:程序博客网 时间:2024/04/30 11:26

使用java开发语言的都对path和classpath不陌生.

 PATH: 用来指定java 虚拟机(JVM) 所在在目录,也就是我们最常用的用来编译java源程序的javac.exe 和用来执行 *.class 文件的 java.exe 这两个命令。以我的机器为例吧:我的 jdk 按装目录为 D:/jdk1.5.0_08(确切的说我的这个JDK不是安装版本的,直接解压到 d:/ 下的 ,此时我的 path 就要这样设path=D:/jdk1.5.0_08;D:/jdk1.5.0_08/bin;),设置好了后就可以在命令行中输入 javac , 与 java 命令了,如果这时能打印出命令的 help 文档就说明 path 设置正确了。  当然也可以执行改目录下的rmic命令,去生成对应的stub和skeleton。

CLASSPATH:用来指定我们自己所写的或要用到的类文件 (.jar文件) 所在的目录。 这里有一个小情况:比如我的classpath一开始没有设定,而我的java类文件所在的目录为: d:/javalesson/lesson1  这个文件夹中,此时我把我的命令行窗口所在的目录设置为 d:/javalesson/lesson1(也就是我的类文件所存放的目录) ,这时如果运行某个 .class 文件是一定能找到的。这时我开始设置 classpath 这个目录,比如我设置为classpath=c:/abc这个目录,这时我的命令行窗口所在的目录没修改仍然为: d:/javalesson/lesson1 (也就是我的类文件所存放的目录,没有改变) , 再运行 java 时就会发生 找不到某某类这样的错误,这是因为你只要设置了 classpath 这个环境变量系统就不会再在当前目录下查询某个类了,所以会发生某某类找不到这样的错误,如果你要既要让系统在 classpath所指定的目录中去找某个类,又要让系统在当前目录下查询某个类,这时你只要让你的 classpath 中多一个 “.” 就可以了,例如:classpath=c:/abc;.这时你的目录即使在 d:/javalesson/lesson1 ,也会找到类文件的。下面以java环境变量为例设置方法: 
1、如果是Win95/98,在/autoexec.bat的最后面添加如下3行语句: 
JAVA_HOME=c:/j2sdk1.4.1 
PATH=%JAVA_HOME%/bin;%PATH% 
CLASSPATH=.;%JAVA_HOME%/lib 
看好了CLASSPATH中第一个".",这个代表当前目录,很多人HelloWorld没有运行起来大多是这个原因。 

2、如果是Win2000或者XP,使用鼠标右击"我的电脑"->属性->高级->环境变量 
系统变量->新建->变量名:JAVA_HOME 变量值:c:/j2sdk1.4.1 
系统变量->新建->变量名:CLASSPATH 变量值:.;%JAVA_HOME%/lib 
系统变量->编辑->变量名:Path 在变量值的最前面加上:%JAVA_HOME%/bin; 
CLASSPATH前面的那个"."和上面的意义是一样的。 

3、如果是Linux用户 
在你的环境中,通常我加在.bashrc文件中,你可以加在你的Profile文件中。 
/usr/local/jdk 为你安装jdk的目录。 
export JAVA_HOME=/usr/local/jdk 
export CLASSPATH=.:$JAVA_HOME/lib 
export PATH=$PATH:$JAVA_HOME/bin

 

 

简单的说JDK是面向开发人员使用的SDK,它提供了Java的开发环境和运行环境。SDK是Software Development Kit 一般指软件开发包,可以包括函数库、编译程序等。
   JDK就是Java Development Kit
JRE是Java Runtime Enviroment是指Java的运行环境,是面向Java程序的使用者,而不是开发者。

如果安装了JDK,会发同你的电脑有两套JRE,一套位于 \jre 另外一套位于 C:\Program Files\Java\j2re1.4.1_01 目录下,后面这套比前面那套少了Server端的Java虚拟机,不过直接将前面那套的Server端Java虚拟机复制过来就行了。而且在安装JDK可以选择是否安装这个位于 C:\Program Files\Jav a 目录下的JRE。如果你只安装JRE,而不是JDK,那么只会在 C:\Program Files\Java 目录下安装唯一的一套JRE。

     JRE的地位就象一台PC机一样,我们写好的Win32应用程序需要操作系统帮我们运行,同样的,我们编写的Java程序也必须要JRE才能运行。所以当你装完JDK后,如果分别在硬盘上的两个不同地方安装了两套JRE,那么你可以想象你的电脑有两台虚拟的Java PC机,都具有运行Java程序的功能。所以我们可以说,只要你的电脑安装了JRE,就可以正确运行Jav a应用程序。

       1、为什么Sun要让JDK安装两套相同的JRE?这是因为JDK里面有很多用Java所编写的开发工具(如javac.exe、jar.exe等),而且都放置在 \lib\tools.jar 里。从下面例子可以看出,先将tools.jar改名为tools1.jar,然后运行javac.exe,显示如下结果: Exception in thread "main" java.lang.NoClassDefFoundError: com/sun/tools/javac /Main 这个意思是说,你输入javac.exe与输入 java -cp c:\jdk\lib\tools.jar com.sun.tools.javac.Main 是一样的,会得到相同的结果。从这里我们可以证明javac.exe只是一个包装器(Wrapper),而制作的目的是为了让开发者免于输入太长的指命。而且可以发现\lib目录下的程序都很小,不大于2 9K,从这里我们可以得出一个结论。就是JDK里的工具几乎是用Java所编写,所以也是Java应用程序,因此要使用JDK所附的工具来开发Java程序,也必须要自行附一套JRE才行,所以位于C:\Program Files\Java目录下的那套JRE就是用来运行一般Java程序用的。

      2、如果一台电脑安装两套以上的JRE,谁来决定呢?这个重大任务就落在java.exe身上。Java.exe的工作就是找到合适的JRE来运行Java程序。 Java.exe依照底下的顺序来查找JRE:自己的目录下有没有JRE;父目录有没有JRE;查询注册表: [HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment] 所以java.exe的运行结果与你的电脑里面哪个JRE被执行有很大的关系。

     3、介绍JVM JRE目录下的Bin目录有两个目录:server与client。这就是真正的jvm.dll所在。 jvm.dll无法单独工作,当jvm.dll启动后,会使用explicit的方法(就是使用Win32 API之中的LoadLibrary()与GetProcAddress()来载入辅助用的动态链接库),而这些辅助用的动态链接库(.dll)都必须位于jvm.dll所在目录的父目录之中。因此想使用哪个JVM,只需要设置PATH,指向JRE所在目录底下的jvm.dll。

JDK 是整个Java的核心,包括了Java运行环境,Java工具和Java基础的类库。
   
java编译里的javac是什么?
javac – 编译器,将源程序转成字节码 用来编译.java文件的
javac是编译java程序的工具,它就是一个普通的.exe的文件
java – 运行编译后的java程序(.class后缀的)

.exe、.com、.sys这样的后缀名的文件叫可执行文件。在dos中,如果想运行这些文件,直接输入文件的名称就可以了,可以不用加上后缀

java中给我们提供了很多工具,你可以到java安装目录中的jdk或jre子目录下面的bin目录中看到它们,其中就有javac.exe

path 设置的 可执行文件的路径,包括javac.exe 与 java.exe 分别是用来编译 .java 与.class文件的
所以 path里面设置 应该是 ;%JAVA_HOME%\bin
而classpath 设置的是java工具箱的库文件 顾名思义 就是系统类的 路径,比如 java.io java.uril
java.awt.event  javax.swing.JButton 等等这些系统类 这些系统内 分别在 .;%java_home%\lib\dt.jar;%java_home%\lib\tools.jar;
lib 是libarary 的缩写 就是 库的意思