溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

java中的classpath指向什么

發(fā)布時(shí)間:2021-12-31 14:10:15 來源:億速云 閱讀:186 作者:小新 欄目:開發(fā)技術(shù)

這篇文章主要介紹java中的classpath指向什么,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!

java中的classpath指向什么

java中的classpath指向什么

今天在項(xiàng)目里看到好多地方都用到了classpath,并且自己對(duì)calsspath到底指向哪里還不是很清楚,所以就在網(wǎng)上百度了一下!

java中的classpath指向什么

上面圖片的意思簡(jiǎn)單來說,就是classpath只能表示lib目錄和WEB-inf/classes路徑下的文件,calsspath不能表示的src路徑下面的文件,

java中的classpath指向什么

但是從項(xiàng)目結(jié)構(gòu)來看,配置文件一般是不放在放在WEB-INF下面啊,并且也沒有看到classes路徑,lib目錄不是放依賴jar包的嗎。此時(shí)感覺涼涼了。并且測(cè)試了一下,在WEB-INF路徑下面創(chuàng)建了lib和classes文件夾,

java中的classpath指向什么

java中的classpath指向什么

測(cè)試的結(jié)果也很明顯,訪問不到WEB-INF下面的classes和lib路徑下面的文件,報(bào)錯(cuò)了。

但是,我有一想,不對(duì)啊,明明項(xiàng)目中能用classpath引入配置文件,那到底是怎么引入的呢?

從第一張圖和第二張圖,使用classpath訪問到了src路徑下面的main/resources文件中的配置文件

打開編譯后的項(xiàng)目,發(fā)現(xiàn)項(xiàng)目文件中有一個(gè)文件名為.classpath的文件,點(diǎn)開看了一下

java中的classpath指向什么

java中的classpath指向什么

具體classpath文件的介紹可以參考下面博客

.classpath文件詳解

.classpath文件用于記錄項(xiàng)目編譯環(huán)境的所有信息,包括:源文件路徑、編譯后class文件存放路徑、依賴的jar包路徑、運(yùn)行的容器信息、依賴的外部project等信息。如果把該文件刪除,則eclipse不能講該工程識(shí)別為一個(gè)正常的java工程,僅僅當(dāng)做普通的文件夾而導(dǎo)致不能正常運(yùn)行。

  • 源文件的具體位置(kind=”src”)

  • 運(yùn)行的系統(tǒng)環(huán)境(kind=”con”)

  • 工程的library的具體位置信息(kind=”lib”)

  • 在每個(gè)lib的xml子節(jié)點(diǎn)中,有關(guān)于它的其它配置信息(例如我配置的那個(gè)”javadoc_location”)

  • 項(xiàng)目的輸出目錄(kind=”output”)

總體上說這個(gè)文件就是配置整個(gè)工程的運(yùn)行環(huán)境。

這就很明白了,classpath值得就是(kind=”src”)所指定的文件,并且此時(shí)的可以看到(kind=”src”)的設(shè)置并沒有包含WEB-INF文件。此時(shí)我們要驗(yàn)證WEB-INF文件被classpath訪問跟這個(gè)設(shè)置有關(guān)嗎。

首先我們將applicationContext.xml文件放在WEB-INF路徑下面,并且.classpath文件內(nèi)容如下圖,啟動(dòng)本項(xiàng)目

java中的classpath指向什么

java中的classpath指向什么

java中的classpath指向什么

打開項(xiàng)目的原始文件,發(fā)現(xiàn)applicationContext.xml并沒有出現(xiàn)

java中的classpath指向什么

此時(shí)我們將.classpath文件中添加

classpathentry kind=”src” path=”WebContent/WEB-INF”/

java中的classpath指向什么

再次啟動(dòng)本項(xiàng)目

java中的classpath指向什么

打開項(xiàng)目的原始路徑下,發(fā)現(xiàn)applicationcontext.xml出現(xiàn)在了WebContent/WEB-INF下面

java中的classpath指向什么

由此可以總結(jié):

  • 1、在編譯時(shí)生成的文件.classpath 中kind=”src” 的類型為classpath 路徑,在項(xiàng)目里可以用classpath:xxx方式引用。也可以手動(dòng)過來自己添加、擴(kuò)大classpath的范圍,也就是說你想知道classpath可以引用哪里的文件,點(diǎn)開.classpath 看看kind=”src” 的就知道了

  • 2、在編譯生成的項(xiàng)目下的bulid/classes/ 下具有的文件都是classpath 路徑下的文件,都可以通過classpath:方法獲取。(classes:指的是編譯后的文件)

  • 3、”src不是classpath, WEB-INF/classes,lib才是classpath”這句話也會(huì)不對(duì)的,這是編寫項(xiàng)目時(shí)看到的,真正的classpath是在編譯后文件存放路徑,默認(rèn)是的bulid/classes/ (如結(jié)論2)

以上是“java中的classpath指向什么”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI