myeclipse中的classpath是一個很重要的問題java
myeclipse的在查找的時候都是按照其查找,並且myeclipse有一個專門的文件來保存classpath的信息,這也是別人的項目拷貝的時候須要的一個重要文件,否則這個項目要導入到本身的myeclipse中就會發生錯誤,此時就只能是手工來編寫這個文件,myeclipse的classpath文件就是項目根目錄下的「.classpath」文件,其格式以下:web
- <?xml version="1.0" encoding="UTF-8"?>
- <classpath>
- <classpathentry kind="src" path="src"/>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
- <classpathentry kind="con" path="melibrary.com.genuitec.eclipse.j2eedt.core.MYECLIPSE_JAVAEE_6_CONTAINER"/>
- <classpathentry kind="con" path="org.eclipse.jst.j2ee.internal.web.container"/>
- <classpathentry kind="con" path="org.eclipse.jst.j2ee.internal.module.container"/>
- <classpathentry kind="output" path="WebRoot/WEB-INF/classes"/>
- </classpath>
<classpath>... ...</classpath> 這個標籤中存放的即是classpath的信息,它通常包含如下五種形式:tomcat
1.<classpathentry kind="src" path="src"/>服務器
對應的是source folder類型的目錄,kind---表示這個classpath的類型,path表示在項目中的路徑,path使用根目錄的相對路徑(相對.classpath文件自己的相對路徑) ,myeclipse項目中的src自己就是一個source folder,因此它會自動寫入這個文件中,若是本身手動創建了一個source folder,這個folder也會寫入這個文件,形式就是以上形式eg.在項目基礎上新建一個test的source folder,就會就會成爲這樣: <classpathentry kind="src" path="src"/> eclipse
<classpathentry kind="src" path="test"/> jsp
二、<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>測試
這句是表示程序的運行環境 kind="con"---表示classpath的類型,con便是container,就是程序運行的容器,或者就說是運行環境也OK,它其實是在Myeclipse最初的時候要配置installed JREs中指定(通常狀況下咱們指定的是JDK),可是這裏實際使用的是JDK下的JRE中的jar包,就是JDK_HOME/jre/lib就是對應的這條語句ui
三、<classpathentry kind="con" path="melibrary.com.genuitec.eclipse.j2eedt.core.MYECLIPSE_JAVAEE_6_CONTAINER"/>spa
這句是kind="con"固然和上條同樣,是表示運行時的容器,通常狀況下是java web項目纔會有,它是包含了J2EE服務器要使用到的一些jar包,這個目錄中的jar包是其中最特殊的,那就是它不會在部署項目的時候部署到服務器上去,由於myeclipse認爲這樣的jar包是服務器應該有的,因此這裏有時候會出現問題,就是開發的時候不出現問題,可是部署以後會出錯,就是有的服務器有的jar包並無提供,好比tomcat(由於tomcat並非專業的web服務器,它只是一個輕量的web容器),這就要區分好開發環境和運行環境 。xml
4.<classpathentry kind="lib" path="WebRoot/WEB-INF/lib/bsf-2.3.0.jar"/>
這條語句kind="lib",對應的是classpath中的庫文件,path指定庫文件的路徑,一樣是相對與項目根目錄的相對路徑
五、<classpathentry kind="output" path="WebRoot/WEB-INF/classes"/>
這條表示項目的輸出目錄,整個以前定義的classpath不管是kind='src",kind="con",kind="lib",在編譯後都會進入到這個目錄中來,在java web中也就是WebRoot/WEB-INF/classes。一樣使用的path是相對項目根目錄的相對路徑(相對.classpath文件自己的相對路徑),可是因爲J2EE部分的是自己要求web 服務器自己要有那些jar包,因此那個例外不會進行拷貝
總結
kind=」src" ----對應source folder目錄
kind="con"--項目的容器,通常當是java web項目的時候會有兩個
kind="lib"---項目中使用到的庫文件
kind='output"--輸出目錄,最終編譯後相關文件的目標目錄,myeclipse會自動完成相關的拷貝
實踐: 使用myEclipse 9做爲IDE,下載一個web工程,編輯發現缺乏servlet.jar、jsp.jar,部署到Tomcat能正常運行,由於Tomcat 自帶了這幾個包,只是在開發環境找不到,打開工程-》property-->java build path-->libray
發現裏面有一項:melibrary.com.genuitec.eclipse.j2eedt.core.MYECLIPSE_JAVAEE_6_CONTAINER 裏面沒有jar包,查上面資料,發現這個目錄就是我要找的東西,只在開發環境中使用,部署的時候不會拷到tomcat的目錄,因此要爲這個目錄增長鬚要的jar包,反覆測試,發現這個目錄的jar包沒有辦法增長。換思路,這個是工程裏有的路徑,而個人myEclipse裏沒有這個路徑,因此沒有jar包,那麼換成myEclipse有的環境不就好了。
點擊 add library 按鈕--》myEclipse library -->j2EE 1.5 librariesu 問題解決。