熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java核心技術 >> 正文

classpath的理解

2022-06-13   來源: Java核心技術 

  jvm的類加載分三中方式

  系統級別rtjar

  擴展級別java_home/jre/lib/ext/目錄下的jar文件

  應用級別環境變量中的classpath或javac   java中的參數指定java   classpath       

  或者自己寫ClassLoader加載

  前面中是JVM自動處理其中第二種是為了處理Java的classpath災難而提供的解決方案

  

  實際上java虛擬機是由java luncher初始化的也就是java(或javaexe)

  這個程序來做的   虛擬機按以下順序搜索並裝載所有需要的類:

     引導類:   組成java平台的類   包含rtjar和injar中的類

     擴展類:   使用java擴展機制的類都是位於擴展目錄($JAVA_HOME/jre/lib/ext)

  中的jar檔案包

     用戶類:   開發者定義的類或者沒有使用   java   擴展機制的第三方產品   你必須在

  命令行中使用   classpath   選項或者使用   CLASSPATH   環境變量來確定這些類的位置   我

  們在上面所說的用戶自己的類就是特指這些類

  這樣   一般來說   用戶只需指定用戶類的位置   引導類和擴展類是 自動 尋找的

  當你的程序需要第三方的類庫支持   而且比較常用   就可以采用此種方法比如常

  用的數據庫驅動程序   寫   servlet   需要的   servlet   包等等   設置方法就是在環境變量中

  加入   CLASSPATH   然後就可以直接編譯運行了而你的程序只用了些基礎類尋找時就用不

  著必須設定它

  

  在執行Java程序的時候會自動加載程序用中需要的在rtjar和其他java_home\jre\lib中包含的jar文件中包含的Java基礎類庫和一些擴展類庫這些都是JVM自動處理的對用戶來說是透明的

  如果Java程序中使用到了一些應用級別的類(如第三方的類)可以在javac和java中的classpath選項中指定它們的搜索路徑或者是自 己寫ClassLoader加載另外也可以設置ClassPath環境變量在裡面指定那些應用級別的類的搜索路徑

  設置ClassPath環境變量不是必須的只是為了方便使用設置了ClassPathJDK就會按ClassPath制定的路徑去搜索需要的應用級別的類而不必每一次都使用classpath選項或自己寫ClassLoader

  還有需要注意的就是如果相關的類就在當前工作目錄下的話上面種方法都可以不要因為JDK系統會首先搜索會在當前的工作目錄中搜索程序相關的類 (在jdk下已經驗證)


From:http://tw.wingwit.com/Article/program/Java/hx/201311/27125.html
    推薦文章
    Copyright © 2005-2022 電腦知識網 Computer Knowledge   All rights reserved.