myeclipse中的classpath .
博客分類:
- java基礎
myeclipse中的classpath是一個很重要的問題
myeclipse的在查找的時候都是按照其查找,而且myeclipse有一個專門的文件來保存classpath的信息,這也是別人的項目拷貝的時候需要的一個重要文件,不然這個項目要導入到自己的myeclipse中就會發生錯誤,此時就只能是手工來編寫這個文件,myeclipse的classpath文件就是項目根目錄下的“.classpath”文件,其格式如下:
Java代碼- <?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的信息,它一般包含以下五種形式:
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"/>
<classpathentry kind="src" path="test"/>
2、<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就是對應的這條語句
3、<classpathentry kind="con" path="melibrary.com.genuitec.eclipse.j2eedt.core.MYECLIPSE_JAVAEE_6_CONTAINER"/>
這句是kind="con"當然和上條一樣,是表示運行時的容器,一般情況下是java web項目才會有,它是包含了J2EE服務器要使用到的一些jar包,這個目錄中的jar包是其中最特殊的,那就是它不會在部署項目的時候部署到服務器上去,因為myeclipse認為這樣的jar包是服務器應該有的,所以這裏有時候會出現問題,就是開發的時候不出現問題,但是部署之後會出錯,就是有的服務器有的jar包並沒有提供,比如tomcat(因為tomcat並不是專業的web服務器,它只是一個輕量的web容器),這就要區分好開發環境和運行環境 。
4.<classpathentry kind="lib" path="WebRoot/WEB-INF/lib/bsf-2.3.0.jar"/>
這條語句kind="lib",對應的是classpath中的庫文件,path指定庫文件的路徑,同樣是相對與項目根目錄的相對路徑
5、<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 問題解決。
myeclipse中的classpath .