1. 程式人生 > >.classpath和.project的作用

.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的位置

。如果你的專案中沒有.project檔案,那麼eclipse就不能把它當作一個專案。

.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
[email protected]
32303037303632392D3130303020437265617465496E746572707265742F777063 </comment>
    <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檔案輸出的目錄