eclipse java工程目录_转载:Eclipse下的java工程目录
對(duì)新手來講,一個(gè)Java工程內(nèi)部的多個(gè)文件夾經(jīng)常會(huì)讓大家困惑。更可惡的是莫名其妙的路徑問題,在Eclipse編寫Java程序中,出現(xiàn)頻率最高的錯(cuò)誤很可能就是路徑問題。
這些問題原因其實(shí)都是一個(gè),就是關(guān)于Java工程內(nèi)的文件結(jié)構(gòu)理解不清,雖然我也不是老手,但有一些經(jīng)驗(yàn),拿來和大家分享:
eclipse的基本工程目錄叫做workspace,每個(gè)運(yùn)行時(shí)的eclipse實(shí)例只能對(duì)應(yīng)一個(gè)workspace,也就是說,workspace是當(dāng)前工作的根目錄。我們?cè)趙orkspace中可以隨意創(chuàng)建各種java相關(guān)的工程,普通的java應(yīng)用,java web應(yīng)用,web service應(yīng)用等,我們僅拿普通的java application來說明。
通常我們創(chuàng)建一個(gè)java application工程,會(huì)創(chuàng)建一個(gè)工程目錄,假設(shè)工程名稱為:TestProject,那么在當(dāng)前的workspace里講創(chuàng)建一個(gè)目錄名為TestProject,同時(shí)我們選擇src作為源碼文件夾,bin作為輸出路徑,這樣就構(gòu)成了一個(gè)基本的java application工程。,在workspace中存在如下文件夾:
+workspace
+TestProject
-src
-bin
這個(gè)時(shí)候我們創(chuàng)建的代碼將寫入src目錄,輸出的class文件將存在于bin目錄。
(對(duì)于新手來說,區(qū)分src目錄和bin目錄很重要,通常情況下,src目錄只存放源代碼,而所有工程相關(guān)的其他輸出文件都會(huì)存放在bin目錄下,最為重 要的是:用Eclipse進(jìn)行打包時(shí)根目錄就是bin,用jar包調(diào)用工程的時(shí)候默認(rèn)的路徑也要以bin為準(zhǔn),到bin的層級(jí)數(shù)目就是最終的數(shù)目,因此可 以說bin是最為重要的目錄,而不是src)
這時(shí)候我們?cè)趕rc目錄下創(chuàng)建一個(gè)類,就叫做TestClass,里面有一個(gè)main方法如下:
Java代碼
public static voidmain(String[] args){
System.out.println(new File("test.txt").exist());
}
同時(shí)在src目錄下創(chuàng)建一個(gè)空的文件test.txt。什么都不要做,保存工程,打開資源管理器,我們來查看workspace/TestProject/bin目錄,下面會(huì)存在兩個(gè)文件:TestClass.class和test.txt。
此時(shí)我們?cè)O(shè)想,程序的內(nèi)容就是檢查test.txt文件是否存在,按照現(xiàn)在的目錄規(guī)劃,我們認(rèn)為,在控制臺(tái)上將打出“true”,ok,我們回到eclipse中,運(yùn)行TestClass這個(gè)類??刂婆_(tái)輸出了:false!
為什么我們得到了并非我們預(yù)期的結(jié)果呢?先別著急,我們打開windows的命令行界面(或者linux的shell都o(jì)k),將目錄切換到workspace/TestProject/bin目錄下,執(zhí)行如下命令java TestClass,看看出現(xiàn)什么結(jié)果?true!對(duì),就是true。
為啥同樣的程序會(huì)有不同的結(jié)果呢?這個(gè)答案很簡(jiǎn)單,就出在java.exe本身的一個(gè)參數(shù)-cp(classpath)上!
eclipse默認(rèn)的classpath包括三個(gè)部分:
1、jdk的bin目錄;
2、工程引用的所有其他jar包路徑
3、工程根路徑(對(duì),不是bin路徑)
那么我們就可以理解來,在classpath的根路徑中并不存在這個(gè)test.txt文件,用相對(duì)路徑描述,這個(gè)文件實(shí)際存在于src/test.txt 和bin/test.txt。也就是說,classpath默認(rèn)的路徑是workspace-testproject下,而不是workspace- testproject-bin下,所以才找不到這個(gè)文件。這是經(jīng)常出現(xiàn)的問題!
那么這個(gè)時(shí)候就有疑問了,如果我們打包發(fā)布工程,是不是jar包中會(huì)把testproject根目錄作為包中的根目錄呢?幸運(yùn)的是,eclipse考慮好 了這個(gè)問題。通過eclipse的導(dǎo)出jar能力,bin目錄會(huì)作為jar的根目錄,而不是bin的上層的工程目錄,這樣類的包路徑就是正確的,同時(shí),工 程目錄下的資源文件、配置文件等也被拷貝到這里,也就是相當(dāng)于把工程目錄下的這些文件拷貝到來bin目錄后再打包,這樣文件的相對(duì)路徑也就符合默認(rèn)的 classpath了。
從上面可以總結(jié)出來:Eclipse直接運(yùn)行時(shí),是以工程的根目錄作為基準(zhǔn)目錄。而打包成jar運(yùn)行時(shí),則是以bin目錄作為基準(zhǔn)目錄。這兩者相差了一級(jí)目錄,如果理解的不好,可能會(huì)導(dǎo)致錯(cuò)誤。希望大家注意!
總結(jié)
以上是生活随笔為你收集整理的eclipse java工程目录_转载:Eclipse下的java工程目录的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 北京环球影城斗篷多少钱
- 下一篇: 植发发际线多少钱啊?