項目裏用到了classpath路徑來引用文件,那麼classpath指的是哪裏呢html
我首先把上面的applicationContext.xml文件放在了src目錄下發現能夠。java
那麼classpath究竟是哪裏呢,在網上看了幾篇博客web
畫黃線部分解釋了我放在src目錄下能用classpath:訪問的問題。app
可是紅線部分,他說這句話對,我感受有問題。ui
而後我就試了一下spa
發現不管是放在WEB-INF目錄下,仍是WEB-INF/lib下都不行。WEB-INF/classes文件尚未。。。。。xml
而後去項目WorkeSpaces 下看 bulib/ classes (這裏是classpath路徑 )裏 發現applicationContext.xml並不在裏htm
點開編譯後的項目下的.classpath文件發現,有四種類型的kindblog
.classpath內容解釋get
.classpath是描述了工程的依賴文件:
- 源文件的具體位置(kind="src")
- 運行的系統環境(kind="con")
- 工程的library的具體位置信息(kind="lib")
- 在每一個lib的xml子節點中,有關於它的其它配置信息(例如我配置的那個"javadoc_location")
- 項目的輸出目錄(kind="output")
整體上說這個文件就是配置整個工程的運行環境。
咱們能夠看到kind爲src的只有"src"並麼有包含web-inf 文件夾
而後我看到一篇博客解決classpath路徑的問題http://blog.sina.com.cn/s/blog_792701cd0101hpbr.html
而後我照着在.classpath添加了一行
運行成功!
去workespaces /項目名/build/classes/ 下發現
哎!applicationContext.xml進來了
由此能夠總結:
一、在編譯生成的文件.classpath 中kind="src" 的類型爲classpath 路徑,在項目裏能夠用classpath:xxx方式引用。也能夠手動過來本身添加、擴大classpath的範圍, <classpathentry kind="src" path="XXX"/>.
也就是說你想知道classpath指的是哪裏點開.classpath 看看kind="src" 的就知道了
二、在編譯生成的項目下的bulid/classes/ 下具備的文件都是classpath 路徑下的文件,均可以經過classpath:方法獲取。
三、」src不是classpath, WEB-INF/classes,lib纔是classpath」這句話不對,這是編寫項目時看到的,真正的classpath是在編譯後的bulid/classes/ (如2的解釋)
如何獲取項目類編譯後的路徑
String path = 類名.class.getClassLoader().getResource("").getPath();