《Java項目中classpath路徑詳解》

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

  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進來了

 

由此能夠總結:

一、在編譯生成的文件.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();

相關文章
相關標籤/搜索