java工程中的.classpathaaaaaaaaaaaaaaaa转载
第一部分:
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 Nature@key 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文件輸出的目錄?
轉載于:https://www.cnblogs.com/zhangzs000/p/6032466.html
總結
以上是生活随笔為你收集整理的java工程中的.classpathaaaaaaaaaaaaaaaa转载的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 20161104面试题-面试常问问题
- 下一篇: ActiveMQ的简单例子应用