classpath的理解

 我来答
温屿17
2022-09-26 · TA获得超过1.2万个赞
知道小有建树答主
回答量:827
采纳率:0%
帮助的人:95.3万
展开全部

  jvm的类加载分三中方式

  系统级别 rt jar

  扩展级别 java_home/jre/lib/ext/目录下的jar文件

  应用级别 环境变量中的classpath或javac   java中的参数指定java   classpath       

  或者自己写ClassLoader加载

  前面 中是JVM自动处理 其中第二种是为了处理Java的classpath灾难而提供的解决方案

  

  实际上java虚拟机是由java luncher初始化的 也就是java(或java exe)

  这个程序来做的    虚拟机按以下顺序搜索并装载所有需要的类:

      引导类:   组成java平台的类    包含rt jar和i n jar中的类

      扩展类:   使用java扩展机制的类 都是位于扩展目录($JAVA_HOME/jre/lib/ext)

  中的 jar档案包

      用户类:   开发者定义的类或者没有使用   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

lishixinzhi/Article/program/Java/hx/201311/27125

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式