1. 程式人生 > >《Java項目中classpath路徑詳解》

《Java項目中classpath路徑詳解》

包含 文件夾 獲取 目的 nbsp china RF 文件的 發現

項目裏用到了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是描述了工程的依賴文件:

  1. 源文件的具體位置(kind="src")
  2. 運行的系統環境(kind="con")
  3. 工程的library的具體位置信息(kind="lib")
  4. 在每個lib的xml子節點中,有關於它的其它配置信息(例如我配置的那個"javadoc_location")
  5. 項目的輸出目錄(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路徑詳解》