分类: Java
2012-03-07 14:17:38
jvm的气动阀门类加载分三中方式:
系统级别:rt.jar
扩展级别:java_home/jre/lib/ext/目录下的jar文件
应用级别:环境变量中的classpath或javac java中的参数指定java -classpath .. ...
或者自己写ClassLoader加载。
前面2中是JVM自动处理。其中第二种是为了处理Java的classpath灾难而提供的解决方案。
实际上java虚拟机是由java luncher初始化的,也就是java(或java.exe)
这个程序来做的. 虚拟机按以下顺序搜索并装载所有需要的类:
1, 引导类: 组成java平台的类, 包含rt.jar和i18n.jar中的类.
2, 扩展类: 使用java扩展机制的类,都是位于扩展目录($JAVA_HOME/jre/lib/ext)
中的.jar档案包.
3, 用户类: 开发者定义的类或者没有使用 java 扩展机制的第三方气动阀门产品. 你必须在
命令行中使用 -classpath 选项或者使用 CLASSPATH 环境变量来确定这些类的位置. 我
们在上面所说的用户自己的类就是特指这些类.
这样, 一般来说, 用户只需指定用户类的位置, 引导类和扩展类是 "自动 "寻找的.
当你的程序需要第三方的类库支持, 而且比较常用, 就可以采用此种方法.比如常
用的数据库驱动程序, 写 servlet 需要的 servlet 包等等. 设置方法就是在环境热线变量中
加入 CLASSPATH. 然后就可以直接编译运行了.而你的程序只用了些基础类,寻找时,就用不
着必须设定它.
在执行Java程序的时候,会自动加载程序用中需要的在rt.jar和其他java_home\jre\lib中包含的.jar文件中包含的Java基础类库和一些扩展类库。这些都是JVM自动处理的,对用户来说是透明的。
如果Java程序中使用到了一些应用级别的类(如第三方的类),可以在javac和java中的-classpath选项中指定它们的搜索路径,或者是自 己写ClassLoader加载,另外也可以设置ClassPath环境变量,在里面指定那些应用级别的类的搜索灌装机路径。
设置ClassPath环境变量不是必须的,只是为了方便使用,设置了ClassPath,JDK就会按ClassPath制定的路径去搜索需要的应用级别的类,而不必每一次都使用-classpath选项或自己写ClassLoader。
还有需要注意的就是:如果相关的类就在当前天津工作目录下的话,上面3种方法都可以不要,因为JDK系统会首先搜索会在当前的工作目录中搜索程序相关的类。 (在jdk1.6.0.20下已经验证)
呵呵,如果有不当定额管理处,请指正啊------
气动阀门相关信息请访问:电动阀门 陶瓷止回阀 止回阀