詳解eclipse項(xiàng)目中.classpath文件的使用
1 前言
在使用eclipse或者myeclipse進(jìn)行java項(xiàng)目開(kāi)發(fā)的時(shí)候,每個(gè)project(工程)下面都會(huì)有一個(gè).classpath文件,那么這個(gè)文件究竟有什么作用?
2 作用
.classpath文件用于記錄項(xiàng)目編譯環(huán)境的所有信息,包括:源文件路徑、編譯后class文件存放路徑、依賴的jar包路徑、運(yùn)行的容器信息、依賴的外部project等信息。如果把該文件刪除,則eclipse不能講該工程識(shí)別為一個(gè)正常的java工程,僅僅當(dāng)做普通的文件夾而導(dǎo)致不能正常運(yùn)行。
3 .classpath內(nèi)容
.classpath文件其實(shí)也是一個(gè)xml格式的內(nèi)容文件,其具體內(nèi)容大致如下:
<?xml version="1.0" encoding="UTF-8"?> <classpath> <classpathentry kind="src" path="src"/> <classpathentry kind="src" path="resource"/> <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/jdk1.7"> <attributes> <attribute name="owner.project.facets" value="java"/> </attributes> </classpathentry> <classpathentry kind="con" path="org.eclipse.jst.server.core.container/org.eclipse.jst.server.tomcat.runtimeTarget/學(xué)習(xí) 8080"> <attributes> <attribute name="owner.project.facets" value="jst.web"/> </attributes> </classpathentry> <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="WebContent/WEB-INF/classes"/> </classpath>
①以”classpath”為根節(jié)點(diǎn),每個(gè)“classpathentry”節(jié)點(diǎn)代表一個(gè)說(shuō)明信息。
②每個(gè)“classpathentry”以“kind”屬性指明類型,“path”指明路徑。
③以上文件的所有內(nèi)容,都是依賴項(xiàng)目中的“Java Build Path”內(nèi)容改變而改變的,即對(duì)“Java Build Path”的所有操作都會(huì)反應(yīng)到文件內(nèi)容中。
現(xiàn)在來(lái)具體分析文件內(nèi)容的每個(gè)節(jié)點(diǎn)含義
3.1 kind="src"
src:即source 源文件,代表的是一個(gè)源文件,path=”src”是一個(gè)相對(duì)路徑,相對(duì).classpath文件本身,即path=”src”表示文件夾src與.classpath在同一個(gè)目錄,且代表源文件。
<classpathentry kind="src" path="src"/> <classpathentry kind="src" path="resource"/>
kind=”src”的操作對(duì)應(yīng)于“Java Build Path”的“Source”tab頁(yè)
如下圖,增加一個(gè)文件夾bin作為源文件,則.classpath文件增加內(nèi)容
內(nèi)容增加如下:
<classpathentry kind="src" path="src"/> <classpathentry kind="src" path="bin"/> <classpathentry kind="src" path="resource"/>
當(dāng)然,做相應(yīng)修改或刪除,同樣.classpath文件內(nèi)容會(huì)相應(yīng)改變。
另外,當(dāng)指定屬性combineaccessrules=”false”是則代表引入外部project,具體如下
<classpathentry combineaccessrules="false" kind="src" path="/mybatis"/>
對(duì)應(yīng)頁(yè)面tab,其中path=”/mybatis”,是相對(duì)應(yīng)workspace下的
絕對(duì)路徑。
3.2 kind="output"
output用于指定java源文件編譯后的class文件存放路徑,格式如下
<classpathentry kind="output" path="WebContent/WEB-INF/classes"/>
path:代表存放class文件路徑,同樣是相對(duì).classpath文件的路徑,找到“WebContent/WEB-INF/classes”,可以看到class文件的存放
假設(shè)修改輸出文件路徑,則相應(yīng)內(nèi)容也會(huì)改變
改為:spring-mybatis\WebContent\WEB-INF\newclasses
則.classpath文件內(nèi)容修改為:
<classpathentry kind="output" path="WebContent/WEB-INF/newclasses"/>
實(shí)際存放class文件的路徑也會(huì)改變
3.3 kind="con"
con即是container,就是程序運(yùn)行的容器,或者就說(shuō)是運(yùn)行環(huán)境也OK,它實(shí)際上是在Myeclipse最初的時(shí)候要配置installed JREs中指定(一般情況下我們指定的是JDK),但是這里實(shí)際使用的是JDK下的JRE中的jar包,就是JDK_HOME/jre/lib就是對(duì)應(yīng)的這條語(yǔ)句。具體內(nèi)容如下
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/jdk1.7"> <attributes> <attribute name="owner.project.facets" value="java"/> </attributes> </classpathentry> <classpathentry kind="con" path="org.eclipse.jst.server.core.container/org.eclipse.jst.server.tomcat.runtimeTarget/學(xué)習(xí) 8080"> <attributes> <attribute name="owner.project.facets" value="jst.web"/> </attributes> </classpathentry> <classpathentry kind="con" path="org.eclipse.jst.j2ee.internal.web.container"/> <classpathentry kind="con" path="org.eclipse.jst.j2ee.internal.module.container"/>
對(duì)應(yīng)操作tab如下
3.3.1 JRE配置
path=”XXX”用于指定jre容器的使用情況,可選擇jre的不同來(lái)源,不同來(lái)源path的實(shí)際值會(huì)有些變化
①選擇”Workspace default JRE(jdk1.7)”,則值為
path="org.eclipse.jdt.launching.JRE_CONTAINER"
②選擇“Alternate JRE”,則值為
path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/jdk1.7"
其中最后么的jdk1.7是我自定義的JRE名稱
③選擇”Execution environment”,即選擇eclipse自帶的內(nèi)置jre,值為
path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7"
其中最后么的JavaSE-1.7是系統(tǒng)內(nèi)置的JRE名稱
另外屬性值name=”owner.project.facets”
path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7"
應(yīng)該是指定JRE容器的具體使用的模板,默認(rèn)使用”java”,具體的沒(méi)有探究。
3.3.2 Server Runtime配置
同理,其他容器配置同上,如對(duì)Server Runtime 容器的配置,下面配置了tomcat容器運(yùn)行環(huán)境
3.3.3 Web App Libraries配置
<classpathentry kind="con" path="org.eclipse.jst.j2ee.internal.web.container"/>
3.3.4 User Library配置
<classpathentry kind="con" path="org.eclipse.jst.j2ee.internal.web.container"/>
3.4 kind="lib"
kind="lib"
用于指定project依賴的Referenced Libraries,如圖增加了一個(gè)jar包
則相應(yīng).classpath文件內(nèi)容增加
<classpathentry kind="lib" path="WebContent/WEB-INF/lib/commons-dbcp-1.2.1.jar"/>
其中path指定了依賴的jar的相對(duì)路徑。
3.5 順序
.classpath文件中各節(jié)點(diǎn)的順序是通過(guò)tab-Order and Export 來(lái)控制的,不同的順序可能會(huì)引起加載class文件問(wèn)題,一般是源碼放在最前面。
到此這篇關(guān)于詳解eclipse項(xiàng)目中.classpath文件的使用的文章就介紹到這了,更多相關(guān)eclipse .classpath文件內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Spring注入Map集合實(shí)現(xiàn)策略模式詳解
這篇文章主要介紹了Spring注入Map集合實(shí)現(xiàn)策略模式詳解,Spring提供通過(guò)@Resource注解將相同類型的對(duì)象注入到Map集合,并將對(duì)象的名字作為key,對(duì)象作為value封裝進(jìn)入Map,需要的朋友可以參考下2023-11-11Mybatis實(shí)現(xiàn)傳入多個(gè)參數(shù)的四種方法詳細(xì)講解
這篇文章主要介紹了Mybatis實(shí)現(xiàn)傳入多個(gè)參數(shù)的四種方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧2023-01-01Java并發(fā)系列之AbstractQueuedSynchronizer源碼分析(共享模式)
這篇文章主要為大家詳細(xì)介紹了Java并發(fā)系列之AbstractQueuedSynchronizer源碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-02-02淺析idea生成war包放入tomcat的路徑訪問(wèn)問(wèn)題
這篇文章主要介紹了關(guān)于idea 生成war 包放入tomcat的路徑訪問(wèn)問(wèn)題,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-04-04spring boot+ redis 接口訪問(wèn)頻率限制的實(shí)現(xiàn)
這篇文章主要介紹了spring boot+ redis 接口訪問(wèn)頻率限制的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01Java編程IP地址和數(shù)字相互轉(zhuǎn)換代碼示例
這篇文章主要介紹了Java編程IP地址和數(shù)字相互轉(zhuǎn)換代碼示例,具有一定借鑒價(jià)值,需要的朋友可以參考下。2017-11-11File.createTempFile創(chuàng)建臨時(shí)文件的示例詳解
這篇文章主要介紹了File.createTempFile創(chuàng)建臨時(shí)文件的示例詳解,在默認(rèn)臨時(shí)文件目錄中創(chuàng)建一個(gè)空文件,使用給定前綴和后綴生成其名稱。 如果感興趣來(lái)了解一下2020-07-07