java項目中classpath指向哪里
今天在項目里看到好多地方都用到了classpath,并且自己對calsspath到底指向哪里還不是很清楚,所以就在網(wǎng)上百度了一下!
上面圖片的意思簡單來說,就是classpath只能表示lib目錄和WEB-inf/classes路徑下的文件,calsspath不能表示的src路徑下面的文件,
但是從項目結(jié)構(gòu)來看,配置文件一般是不放在放在WEB-INF下面啊,并且也沒有看到classes路徑,lib目錄不是放依賴jar包的嗎。此時感覺涼涼了。并且測試了一下,在WEB-INF路徑下面創(chuàng)建了lib和classes文件夾,
測試的結(jié)果也很明顯,訪問不到WEB-INF下面的classes和lib路徑下面的文件,報錯了。
但是,我有一想,不對啊,明明項目中能用classpath引入配置文件,那到底是怎么引入的呢?
從第一張圖和第二張圖,使用classpath訪問到了src路徑下面的main/resources文件中的配置文件
打開編譯后的項目,發(fā)現(xiàn)項目文件中有一個文件名為.classpath的文件,點開看了一下
具體classpath文件的介紹可以參考下面博客
.classpath文件用于記錄項目編譯環(huán)境的所有信息,包括:源文件路徑、編譯后class文件存放路徑、依賴的jar包路徑、運行的容器信息、依賴的外部project等信息。如果把該文件刪除,則eclipse不能講該工程識別為一個正常的java工程,僅僅當(dāng)做普通的文件夾而導(dǎo)致不能正常運行。
- 源文件的具體位置(kind=”src”)
- 運行的系統(tǒng)環(huán)境(kind=”con”)
- 工程的library的具體位置信息(kind=”lib”)
- 在每個lib的xml子節(jié)點中,有關(guān)于它的其它配置信息(例如我配置的那個”javadoc_location”)
- 項目的輸出目錄(kind=”output”)
總體上說這個文件就是配置整個工程的運行環(huán)境。
這就很明白了,classpath值得就是(kind=”src”)所指定的文件,并且此時的可以看到(kind=”src”)的設(shè)置并沒有包含WEB-INF文件。此時我們要驗證WEB-INF文件被classpath訪問跟這個設(shè)置有關(guān)嗎。
首先我們將applicationContext.xml文件放在WEB-INF路徑下面,并且.classpath文件內(nèi)容如下圖,啟動本項目
打開項目的原始文件,發(fā)現(xiàn)applicationContext.xml并沒有出現(xiàn)
此時我們將.classpath文件中添加
classpathentry kind=”src” path=”WebContent/WEB-INF”/
再次啟動本項目
打開項目的原始路徑下,發(fā)現(xiàn)applicationcontext.xml出現(xiàn)在了WebContent/WEB-INF下面
由此可以總結(jié):
- 1、在編譯時生成的文件.classpath 中kind=”src” 的類型為classpath 路徑,在項目里可以用classpath:xxx方式引用。也可以手動過來自己添加、擴大classpath的范圍,也就是說你想知道classpath可以引用哪里的文件,點開.classpath 看看kind=”src” 的就知道了
- 2、在編譯生成的項目下的bulid/classes/ 下具有的文件都是classpath 路徑下的文件,都可以通過classpath:方法獲取。(classes:指的是編譯后的文件)
- 3、”src不是classpath, WEB-INF/classes,lib才是classpath”這句話也會不對的,這是編寫項目時看到的,真正的classpath是在編譯后文件存放路徑,默認(rèn)是的bulid/classes/ (如結(jié)論2)
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Spring?Cloud集成Nacos?Config動態(tài)刷新源碼剖析
這篇文章主要為大家介紹了Spring?Cloud集成Nacos?Config動態(tài)刷新源碼剖析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-08-08Spring Cloud 系列之服務(wù)調(diào)用 OpenFeign的實現(xiàn)
這篇文章主要介紹了Spring Cloud 系列之服務(wù)調(diào)用 OpenFeign的實現(xiàn),需要的朋友可以參考下2020-11-11MyBatis typeAliases元素標(biāo)簽(含注解方式)及其屬性、設(shè)置方式
這篇文章主要介紹了MyBatis typeAliases元素標(biāo)簽(含注解方式)及其屬性、設(shè)置方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-09-09解決微服務(wù)下Mybatis?xml無效綁定問題及分析Invalid?bound?statement
這篇文章主要介紹了解決微服務(wù)下Mybatis?xml無效綁定問題及分析Invalid?bound?statement,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-11-11