摘要:項(xiàng)目中的到底是什么在項(xiàng)目中,你一定碰到過,通常情況下,我們是用它來指定配置資源文件的路徑。項(xiàng)目發(fā)布后的目錄結(jié)構(gòu)我們使用對項(xiàng)目進(jìn)行打包,一種是包,一種是的文件夾,包解壓后就是了。
java項(xiàng)目中的classpath到底是什么
在java項(xiàng)目中,你一定碰到過classpath,通常情況下,我們是用它來指定配置/資源文件的路徑。在剛開始學(xué)習(xí)的時(shí)候,自己也糊里糊涂,但是現(xiàn)在,是時(shí)候弄清楚它到底是指什么了。
顧名思義,classpath就是class的path,也就是類文件(*.class的路徑)。一談到文件的路徑,我們就很有必要了解一個(gè)java項(xiàng)目(通常也是web項(xiàng)目)它在真正運(yùn)行時(shí)候,這個(gè)項(xiàng)目內(nèi)部的目錄、文件的結(jié)構(gòu);這樣,我們才好分析、理解classpath。
開發(fā)時(shí)期的web項(xiàng)目結(jié)構(gòu)下面,我以一個(gè)ssm的項(xiàng)目為例,我先把開發(fā)時(shí)候的項(xiàng)目的目錄結(jié)構(gòu)圖放出來。根據(jù)maven的約定,一般我們的項(xiàng)目結(jié)構(gòu)就像下面這樣。
classpath用在哪里了?而我們經(jīng)常用到classpath的地方,就是在指定一些配置/資源文件的時(shí)候會使用到。比如說,我們在web.xml中指定springmvc的配置文件,如下圖,我們使用:classpath:entry/dev/spring-mvc.xml;再比如,當(dāng)我們把*Mapper.xml文件放在了main/java/../mapping/文件夾下時(shí),在mybatis的配置文件中配置其位置,我們使用:
classpath*:**/mapper/mapping/*Mapper.xml
很顯然,上面這2個(gè)classpath的配置,是為了告訴配置文件,去哪里尋找我們要指定的配置文件。要想弄清楚為什么是上面這樣寫的,我們就要來看看項(xiàng)目運(yùn)行時(shí)(或者是發(fā)布后)的目錄結(jié)構(gòu)了。
web項(xiàng)目發(fā)布后的目錄結(jié)構(gòu)我們使用IDEA對項(xiàng)目進(jìn)行打包,一種是war包,一種是explorer的文件夾,war包解壓后就是explorer了。我們來對解壓后的目錄結(jié)構(gòu)進(jìn)行分析。
經(jīng)過對比,我們要注意到,開發(fā)時(shí)期的項(xiàng)目里,src/main/下面的java和resources文件夾都被(編譯)打包到了生產(chǎn)包的WEB-INF/classes/目錄下;而原來WEB-INF下面的views和web.xml則仍然還是在WEB-INF下面。同時(shí)由maven引入的依賴都被放入到了WEB-INF/lib/下面。最后,編譯后的class文件和資源文件都放在了classes目錄下。
classpath原來是這個(gè)在編譯打包后的項(xiàng)目中,根目錄是META-INF和WEB-INF 。這個(gè)時(shí)候,我們可以看到classes這個(gè)文件夾,它就是我們要找的classpath。
在第1個(gè)例子里,classpath:entry/dev/spring-mvc.xml 中,classpath就是指WEB-INF/classes/這個(gè)目錄的路徑。需要聲明的一點(diǎn)是,使用classpath:這種前綴,就只能代表一個(gè)文件。
在第2個(gè)例子里,classpath*:**/mapper/mapping/*Mapper.xml,使用classpath*:這種前綴,則可以代表多個(gè)匹配的文件;**/mapper/mapping/*Mapper.xml,雙星號**表示在任意目錄下,也就是說在WEB-INF/classes/下任意層的目錄,只要符合后面的文件路徑,都會被作為資源文件找到。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/76533.html
摘要:只知道把配置文件如等放到目錄就是存放代碼文件的目錄,然后使用來讀取,都放到目錄準(zhǔn)沒錯(cuò),那么到底到底指的什么位置呢路徑下的文件在編譯后會放到路徑下吧。默認(rèn)的是在這里。如果單元測試的話,可以在啟動或者運(yùn)行的選項(xiàng)里指定的路徑的。 只知道把配置文件如:mybatis.xml、spring-web.xml、applicationContext.xml等放到src目錄(就是存放代碼.java文件的...
摘要:到了這個(gè)時(shí)候,我們已經(jīng)可以把京東的分類首頁的手機(jī)模塊給抓取下來,并且保存成。 GeccoSpider爬蟲例子 前些天,想要用爬蟲抓取點(diǎn)東西,但是網(wǎng)上很多爬蟲都是使用python語言的,本人只會java,因此,只能找相關(guān)java的爬蟲資料,在開源中國的看到國內(nèi)的大神寫的一個(gè)開源的爬蟲框架,并下源碼研究了一下,發(fā)現(xiàn)跟官網(wǎng)描述的一樣,夠簡單,簡潔易用!有興趣的朋友可以到官網(wǎng)了解下! 我這個(gè)例...
摘要:到了這個(gè)時(shí)候,我們已經(jīng)可以把京東的分類首頁的手機(jī)模塊給抓取下來,并且保存成。 GeccoSpider爬蟲例子 前些天,想要用爬蟲抓取點(diǎn)東西,但是網(wǎng)上很多爬蟲都是使用python語言的,本人只會java,因此,只能找相關(guān)java的爬蟲資料,在開源中國的看到國內(nèi)的大神寫的一個(gè)開源的爬蟲框架,并下源碼研究了一下,發(fā)現(xiàn)跟官網(wǎng)描述的一樣,夠簡單,簡潔易用!有興趣的朋友可以到官網(wǎng)了解下! 我這個(gè)例...
摘要:第一階段基礎(chǔ)知識第一章開發(fā)環(huán)境的配置知識鋪墊命令在正式進(jìn)入學(xué)習(xí)之前我們來了解一個(gè)看起來格很高的東西命令命令,計(jì)算機(jī)術(shù)語,是指操作系統(tǒng)的命令,是一種面向磁盤的操作命令,主要包括目錄操作類命令磁盤操作類命令文件操作類命令和其它命令。 showImg(https://segmentfault.com/img/remote/1460000019264541?w=600&h=242); 第一階段...
閱讀 3420·2021-10-08 10:15
閱讀 5659·2021-09-23 11:56
閱讀 1482·2019-08-30 15:55
閱讀 461·2019-08-29 16:05
閱讀 2740·2019-08-29 12:34
閱讀 2054·2019-08-29 12:18
閱讀 927·2019-08-26 12:02
閱讀 1663·2019-08-26 12:00