《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是描述了工程的依賴文件:

  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的解釋)

 

如何獲取項目類編譯后的路徑

String path = 類名.class.getClassLoader().getResource("").getPath();


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM