.classpath和.project的作用
第一部分:
classpath是系統的環境變數,就是說JVM載入類的時候要按這個路徑下去找,當然這個路徑下可以有jar包,那麼就是jar包裡所有的class。 eclipse build path是eclipse工程裡需要的包,也是需要的class,本質上沒什麼區別。
你可以測試,比如JDK中有個String類,在java.lang中,那麼你自己宣告一個別的包,類叫String,然後打個jar包,將這個jar包所在的路徑複製到classpath中,在系統的那個String前,這時候你在用String類將是用你自己的,
因為類載入器載入掃描路徑是按順序的,找到之前的jar裡有String,就用了。後面的不在檢視。 但是同一類名,還看你匯入的包,其實你都可以自己建立一個java.lang包,然後建立一個String類,那就完全冒充JDK的啦 哈哈
第二部分:
每個新建java工程(Project)都預設存在的。
1.指定原始檔位置, 對應工程屬性Java build path中Source項中的一項, kind="src" 指明為原始檔, 原始檔路徑path, output為這條路徑中 原始檔編譯以後class檔案的輸出路徑。
2.指定編譯以後class檔案的預設輸出路徑, 對應工程屬性Java build path中 Source項中的default output path, kind="output"指明為預設 class輸出路徑, path為相應輸出路徑。
3.指定工程所用到的庫檔案或目錄, 對應工程屬性Java build path中 Libraries項中的一項, kind="lib"指明為庫檔案或目錄, path為庫 檔案或目錄位置。
第三部分:eclipse中的.project 和 .classpath檔案的具體作用
.project是專案檔案,專案的結構都在其中定義,比如lib的位置,src的位置,classes的位置
.classpath的位置定義了你這個專案在編譯時所使用的$CLASSPATH。
這些檔案你用文字編輯器就能察看了。在一個專案中點重新整理的目的是為了更新.project檔案中的檔案清單,讓你把不通過eclipse提交到專案的檔案顯示出來。
.classpath 檔案
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="src"/>
<classpathentry kind="src" path="test"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/4"/>
<classpathentry kind="lib" path="lib/dom4j-1.6.1.jar">
<attributes>
<attribute name="javadoc_location" value="file:/home/wpc/Work/Apache/dom4j-1.6.1/docs/api$
</attributes>
</classpathentry>
<classpathentry kind="output" path="bin"/>
</classpath>
從資料上我們容易看出,上面描述了工程的依賴檔案:
原始檔的具體位置(kind="src") 執行的系統環境(kind="con") 工程的library的具體位置資訊(kind="lib") 在每個lib的xml子節點中,有關於它的其它配置資訊(例如我配置的那個"javadoc_location") 專案的輸出目錄(kind="output")
總體上說這個檔案就是配置整個工程的執行環境。
.project 檔案
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>CreateInterpret</name>
<comment>JavaCC
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>sf.eclipse.javacc.javaccbuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.jdt.core.javanature</nature>
<nature>sf.eclipse.javacc.javaccnature</nature>
</natures>
</projectDescription>
從資料上看,我們可以瞭解到這些配置主要是描述工程的基本資訊:
工程名<name></name> 工程註釋描述<comment></comment> 執行時需要的額外Eclipse外掛<natures></natures>,及其具體載入方式資訊<buildSpec></buildSpec>
如果你在開發過程中向工程裡面加入了很多額外的外掛,則必然會導致你的Eclipse啟動速度變慢。在這種情況下,你可以到這個檔案裡面去掉一些外掛,不過這樣一來你在開啟那些關聯檔案的時候會載入那些外掛。
.settings 檔案
裡面存放各種外掛的配置檔案。
以上是簡單介紹了Eclipse的Project相關的隱藏配置檔案.
PS:
我們發現幾個問題,工程名是由.project中的<name>標籤定義的,而不是檔案目錄名;
類路徑是通過classpathentry屬性定義的;
將某個工程作為類路徑是這麼定義的:
<classpathentry combineaccessrules="false" kind="src" path="/Sepsif"/>
其中/Sepsif是與Sepsif Samples同處一個根目錄的另一個工程;
<classpathentry kind="output" path="bin"/>定義的是將class檔案輸出的目錄