用了这么久的java,有些小问题却还是搞得有点糊涂。今天整理下jdk,jre,classpath,及类加载器相关内容。(我装的jdk是1.5的)
首先,也是用了好久java后发现的,装了jdk之后,会有两个jre,一个在JAVA_HOME底下,一个在C:/Program Files下,JAVA_HOME下的jre是jdk里用java编写的工具所使用的,C:/Program Files下的jre是普通java程序运行所用(注册表下HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/Java Runtime Environment/1.5.0_15的RuntimeLib的键值为C:/Program Files/Java/jre1.5.0_15/bin/client/jvm.dll,因此默认的jre在C:/Program Files下)。这就解释了为什么我把jdbc驱动放到JAVA_HOME下的jre/lib/ext之下还得配置classpath才能用,而如果放到C:/Program Files下的jre/lib/ext里就不需要配置classpath就能直接用了,因为C:/Program Files下的jre才是普通程序运行用到的jre,扩展类加载器会先自动到C:/Program Files下的jre/lib/ext里检索,然后才到classpath所指定的jar包里检索。
第二,是关于classpath(只说扩展包的配置)。如果使用eclipse等IDE的话,工程所调用的jar包路径除了系统变量classpath(优先检索)外,还有一部分是配置在工程下的.classpath文件里的。所以我想如果使用了IDE的话,jar包路径可以配置在系统变量classpath里,也可以配置在工程的.classpath文件里