首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

JDK跟JRE、paht和classpath

2013-03-27 
JDK和JRE、paht和classpath从下面例子可以看出bin中的工具是用java实现的--------------------------------

JDK和JRE、paht和classpath
从下面例子可以看出bin中的工具是用java实现的-------------------------------------------------------先将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是一样的,会得到相同的结果。

?

既然这些工具是用java实现的,那么在使用这些工具的时候就必然要用到一套JRE,所以在JDK中自带了一套JRE,而且在这个JRE的bin目录中包含了client和server两个文件夹,其实就是两种jvm。

?

而位于JAVA_HOME目录下的那套JRE是用来运行一般Java程序用的。

?

JRE是java的运行环境,既然是运行环境,当然要包含jvm(也就是大家熟悉的虚拟机),还有所有java类库的class文件,这些文件在JRE的lib目录下被打包成了jar(rt.jar)。在windows上的虚拟机就是jre6/bin/client里面的jvm.dll。

?

如果电脑上安装了两个JRE,那怎么判定运行java的JRE是哪一个呢?

-------------------------------------------------------------

根据环境变量PATH的配置,系统会首先找到配置的的java.exe?;

?

(注:如果PATH最前面有“%SystemRoot%\system32;%SystemRoot%;”这样的配置,而且在Windows/system32下存在java.exe,那么系统会选择这个java.exe)

?

Java.exe的工作就是找到合适的JRE来运行Java程序,Java.exe依照底下的顺序来查找JRE:

    自己的目录下有没有JRE;父目录有没有JRE;查询注册表: [HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment]

    所以java.exe的运行结果与你的电脑里面哪个JRE被执行有很大的关系。

    ?

    关于环境变量path和classpath

    ----------------------------------------

    你在命令行中输入简单的名称(例如:java,javac)就可以执行相关的程序,但是有一个问题,系统是怎么知道这些程序文件放在哪的呢?

    这个就是环境变量path的功劳了,path中存放的是一个目录列表,并使用分号“;”间隔,系统就是通过检索这些目录来定位要执行程序位置。

    同样的道理,当java编译器或java虚拟机需要使用一个类文件时(当你从类库中引用了一个类),它们也要先知道从哪里可以获得这些文件,环境变量classpath的工作就是设置这些类文件的位置,它存放的也是夜歌目录列表,并使用分号";"间隔,java编译器或虚拟机会通过它来寻找试图加载的类文件。

    所以,如果想让你的JDK工作,就必须配置好这两个环境变量,系统会通过path来找到java或javac的位置,java或javac会通过classpath找到他们需要的类文件。

    ?

    ?

    add

    ----------

    eclipse、idea等其他IDE有自己的编译器而不是用JDK bin目录中自带的,所以在安装时你会发现他们只要求你选中jre路径就ok了

    ?

    参考:

    http://www.cnblogs.com/myitm/archive/2011/05/03/2035942.html?

    http://shmilylq.iteye.com/blog/244351?

    http://docs.oracle.com/javase/6/docs/technotes/tools/windows/jdkfiles.html

    http://www.ics.uci.edu/~thornton/ics23/LabManual/SettingUpJava.html

热点排行