《Java項目中classpath路徑詳解》
項目裏用到了classpath路徑來引用文件,那麽classpath指的是哪裏呢
我首先把上面的applicationContext.xml文件放在了src目錄下發現可以。
那麽classpath到底是哪裏呢,在網上看了幾篇博客
畫黃線部分解釋了我放在src目錄下能用classpath:訪問的問題。
但是紅線部分,他說這句話對,我感覺有問題。
然後我就試了一下
發現無論是放在WEB-INF目錄下,還是WEB-INF/lib下都不行。WEB-INF/classes文件還沒有。。。。。
然後去項目WorkeSpaces 下看 bulib/ classes (這裏是classpath路徑 )裏 發現applicationContext.xml並不在裏
點開編譯後的項目下的.classpath文件發現,有四種類型的kind
.classpath內容解釋
.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進來了
由此可以總結:
1、在編譯生成的文件.classpath 中kind="src" 的類型為classpath 路徑,在項目裏可以用classpath:xxx方式引用。也可以手動過來自己添加、擴大classpath的範圍, <classpathentry kind="src" path="XXX"/>.
也就是說你想知道classpath指的是哪裏點開.classpath 看看kind="src" 的就知道了
2、在編譯生成的項目下的bulid/classes/ 下具有的文件都是classpath 路徑下的文件,都可以通過classpath:方法獲取。
3、”src不是classpath, WEB-INF/classes,lib才是classpath”這句話不對,這是編寫項目時看到的,真正的classpath是在編譯後的bulid/classes/ (如2的解釋)
《Java項目中classpath路徑詳解》