亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

Classpath和Codebase

2019-11-18 13:25:41
字體:
來源:轉載
供稿:網友

  概要
  
  Classpath和Codebase是java中非常重要的兩個概念,初學者假如沒有把握這兩個概念,在碰到諸如ClassNotFoundException或者相關的異常時不知所措。另外,很多其它方面的錯誤往往也和Classpath有關。本文將具體解釋這兩個概念,并且描述在命令行方式和集成開發環境(以JBuilder為例)中的設置方式。
  
  什么是Classpath
  
  Classpath是Java中的重要概念,它描述了Java虛擬機在運行一個Class時在哪些路徑中加載要運行的類以及運行的類要用到的類。簡單的說,就是像操作系統的path,只不過這個classpath是由Java的虛擬機來使用查找需要加載的類,而操作系統的path是由操作系統用來查找用戶輸入的可執行程序。同path一樣,classpath也是一個環境變量,可以通過set命令來設置。
  
  Classpath和Java包的關系
  
  Java的包(Package)和classpath關系密切。包是以“.”分割的,SUN建議使用域名的逆向排列來區分不同的包,以避免沖突,如com.company.util。在一個包里的類在存儲的時候需要存儲在和包名相同的目錄里,如上述com.company.util包中的Sample.class,要存儲在com/company/util目錄中。
  Classpath有兩種表達方式,一種是指向目錄的classpath,如C:/work/classes,表示C:/work/classes目錄是一個classpath條目;另一種方式是指向壓縮文件的classpath,如C:/work/util.jar,表示C:/work/util.jar文件是一個classpath條目,任何一個包含Java類的zip格式的壓縮文件都可以作為classpath的條目。
  那么classpath和包到底是什么關系呢?簡單的說,就是Java虛擬機在加載類的時候以這樣一種方式查找具體的類文件:classpath+包存儲的目錄+具體的類文件。如classpath中有一個c:/work/classes條目,需要加載的類是com.company.util.Sample.class,那么在加載這個類的時候,虛擬機會查找c:/work/classes/com/company/util目錄,假如Sample.class在這個目錄中,虛擬機就可以找到,假如這個類不在這個目錄中,同時也不在任何一個其它classpath中,那么虛擬機會拋出一個ClassNotFoundException。
  
  Classpath的順序和類版本沖突
  
  Java虛擬機在加載類的時候查找classpath是有順序的,假如在classpath中有多個條目都有同一個名稱的類,那么在較前位置的類會被加載,后面的會被忽略。這種按照順序的類加載可能會導致類的版本沖突。例如classpath=c:/servlet2.2/servlet.jar;c:/servlet2.3/servlet.jar,那么在實際應用的過程中,你使用的是servlet2.2,而不是servlet2.3。很多時候假如不注重這一點,可能會導致希奇的異常。
  
  命令行狀態下的classpath設置
  
  命令行狀態下的classpath可以通過兩種方式設置。
  一種是直接設置環境變量,例如在windows環境下,我們使用set命令:
  set classpath=c:/work/classes;c:/work/util.jar
  另一種方式是在執行javac、java或者其它Java命令時直接指定classpath:
  java -classpath c:/work/classes;c:/work/util.jar com.company.util.Sample
  
  集成開發環境下的classpath設置
  
  集成開發環境中設置classpath一般通過其用戶界面進行,各種集成開發環境的classpath設置各不相同,我們以JBuilder為例來說明集成開發環境下的classpath。
  1.設置Jbuilder的Library
  JBuilder中的classpath要通過類庫來設置,首先選擇Tools->Configure Library,然后點擊New按鈕,點擊Add...,可以選擇要增加的類庫,這個類庫可以是目錄,也可以是zip格式的壓縮文件,如.jar或者.zip。
  2.設置項目需要用到的Library
  在設置了類庫之后,在JBuilder中運行一個class時并不會馬上查找你加入的類庫,而是要在Project->Project Properties->Path->Required Library中設置,選擇Add...按鈕,你就可以增加自己的classpath條目了。
  
  什么是Codebase
  
  使用Java語言編寫的程序,不僅可以在本地的classpath中加載類,也可以根據需要從網絡上下載類。為了使Java程序可以從網絡上下載類,我們需要使用codebase,codebase指定了Java程序在網絡上何處可以找到需要的類。
  
  在Java Applet中使用codebase
  
  眾所周知,可以在Java Applet中使用codebase指定Applet加載其所需要的類的網絡位置。例如:
  
  代碼:
  --------------------------------------------------------------------------------
  
  
  
  --------------------------------------------------------------------------------
  
  
  這個Applet指定了其所用的類可以在服務器上Applet所在的目錄下找到。
  
  在Java application中使用codebase
  
  不僅在Applet中可以使用codebase,在Application中也可以使用codebase。這樣Application除了可以使用classpath中的類,還可以使用網絡上的類。例如:
  java -classpath c:/work/classes -codebase http://www.company.com/classes Sample
  應用程序Sample不僅可以使用c:/work/classes中的類,還可以使用http://www.company.com/classes中的類。
  
  Classpath和codebase的關系
  
  既然Java虛擬機即可以在classpath中加載類,又可以在codebase中加載類,那么classpath和codebase是什么關系呢?實際上,Classpath和codebase都是由系統類加載器(Class Loader)使用的。類加載器在加載一個類的時候,首先在classpath中查找需要的類,然后在codebase中查找,第一個被查找到的類會被加載。例如,在早期的JDK版本中,缺省codebase是空值,假如沒有在classpath中指定“.”(當前目錄),運行當前目錄下的java class時會出現ClassNotFoundException;而在晚些版本中,缺省codebase是“.”,所以即使不在classpath中加入“.”,當前目錄下的java class仍然可以正常運行。
  
  總結
  
  初學Java的朋友一定要把握classpath和codebase的概念,理解其內涵,假如出現編譯、運行程序的過程中出現什么問題,首先應該考慮是否是classpath的問題。實際上,甚至一些非常復雜的應用中,比如服務器端應用,都會因為classpath的設置而出現莫名其妙的問題。假如大家在閱讀本文的過程中有什么問題,請提出來大家一起討論。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
91九色蝌蚪国产| 国产免费一区二区三区在线能观看| 国产精品1区2区在线观看| 亚洲第一天堂av| 国产精品看片资源| 中文字幕欧美在线| 亚洲国产精品成人av| 黑人狂躁日本妞一区二区三区| 亚洲第一区中文99精品| 午夜精品久久久久久99热| 久久人人爽人人爽人人片av高请| www.日韩不卡电影av| 国产久一一精品| 欧美天天综合色影久久精品| 亚洲日本成人女熟在线观看| 91精品在线播放| 欧美日韩亚洲91| 色综合久久88| 国产精品视频久久久| 亚洲国产欧美精品| 久久久久久噜噜噜久久久精品| 一区二区三区四区在线观看视频| 超碰精品一区二区三区乱码| 91精品国产91久久久久久吃药| 2019av中文字幕| 96精品视频在线| 国产欧美在线播放| 欧美激情亚洲精品| www.欧美免费| 国产精品久久久久av| 一本色道久久88综合亚洲精品ⅰ| 狠狠干狠狠久久| 欧美激情一区二区久久久| 国产精品直播网红| 亚洲裸体xxxx| 欧美午夜视频在线观看| 欧美亚洲国产日韩2020| 97在线免费观看视频| 美女福利精品视频| 91精品国产91久久久久久吃药| 亚洲成人av在线播放| 91精品国产高清自在线看超| 日韩av片电影专区| 国产精品美女久久久久av超清| 亚洲黄色有码视频| 久久久久久久久久av| 久久免费成人精品视频| 亚洲天堂免费在线| 国产欧美久久久久久| 亚洲网站视频福利| 亚洲精品永久免费精品| 日本91av在线播放| 精品亚洲国产成av人片传媒| 久久91精品国产91久久跳| 午夜精品一区二区三区在线视| 久久精品国产电影| 亚洲国产成人久久综合一区| 国产精品直播网红| 欧美一级大胆视频| 国产欧美一区二区三区四区| 国产99久久精品一区二区 夜夜躁日日躁| 久久久久久久成人| 欧美色道久久88综合亚洲精品| 精品国产一区二区三区久久| 疯狂做受xxxx高潮欧美日本| 精品久久久久久久大神国产| 欧美韩国理论所午夜片917电影| 亚洲国产第一页| 日韩**中文字幕毛片| 亚洲tv在线观看| 国产日韩欧美影视| 欧美中文字幕视频在线观看| 久久久女人电视剧免费播放下载| 亚洲美女av在线播放| 国产午夜一区二区| 深夜成人在线观看| 亚洲色图18p| 精品国产拍在线观看| 亚洲国模精品私拍| 亚洲人成77777在线观看网| 久久久久久成人精品| 5278欧美一区二区三区| 91在线无精精品一区二区| 91国产一区在线| 国产精品久久久久久久久久小说| 91精品国产91久久久久久不卡| 国产不卡av在线免费观看| 久久久久亚洲精品国产| 8x海外华人永久免费日韩内陆视频| 国产一区二区丝袜高跟鞋图片| 国产一区二区三区在线| 亚洲国产欧美在线成人app| 92看片淫黄大片看国产片| 成人在线激情视频| 国产精品流白浆视频| 97精品国产aⅴ7777| 国产欧美精品久久久| 中文字幕v亚洲ⅴv天堂| 国产乱人伦真实精品视频| 久久噜噜噜精品国产亚洲综合| 91亚洲国产成人精品性色| 欧美一级大片在线观看| 久久人人爽人人爽爽久久| 久久99精品国产99久久6尤物| 亚洲欧美日韩在线高清直播| 国产精品美女久久久久av超清| 亚洲美女精品久久| 亚洲福利视频专区| 日韩免费av一区二区| 国产精品久久久久久久久粉嫩av| 欧美精品精品精品精品免费| 国产精品三级久久久久久电影| 日本精品久久久| 成人免费网站在线| 国产精品一区二区久久国产| 欧美亚洲视频在线观看| 国产精品免费观看在线| 亚洲香蕉在线观看| 久久影院资源网| 亚洲精品小视频| 国产丝袜一区视频在线观看| 成人亲热视频网站| 中文字幕欧美日韩| 欧美在线视频a| 中文字幕欧美日韩在线| 亚洲国产精品成人av| 亚洲第一福利在线观看| xvideos亚洲人网站| 亚洲第一二三四五区| 91精品国产精品| 久久久久北条麻妃免费看| 国产91色在线|免| 日韩美女视频在线观看| 亚洲伦理中文字幕| 久久国产精品久久精品| 伊人久久大香线蕉av一区二区| 国产精品色视频| 久久成年人免费电影| 在线精品高清中文字幕| 亚洲成人动漫在线播放| 国产精品99久久久久久白浆小说| 国产97在线亚洲| 成人久久久久久| 欧美尺度大的性做爰视频| 国产成人高潮免费观看精品| 日本高清+成人网在线观看| 欧美大片在线免费观看| 懂色av影视一区二区三区| 日韩一级裸体免费视频| 午夜精品美女自拍福到在线| 中文字幕久久亚洲| 亚洲专区中文字幕| 久久久中精品2020中文| 91热福利电影| 国产综合福利在线| 91久久中文字幕| 国产精品国产自产拍高清av水多| 亚洲午夜激情免费视频| 不卡av日日日| 国产精品久久久久久五月尺| 国产美女主播一区| 亚洲色图五月天| 91精品国产自产在线观看永久| 亚洲午夜未满十八勿入免费观看全集|