2010-08-20 172 views
71

我對這兩個術語感到困惑。Class Path和Build Path有什麼區別

另外我應該怎麼做在Spring MVC項目的src文件夾下創建一個文件? 當我創建使用File對象時,它創建了C:\ SpringSourceTool中的文件...我想這是ClassPath的權利?

如何獲得applicationcontext文件夾或應用程序的根目錄?

回答

80

構建路徑用於構建您的應用程序。它包含編譯應用程序所需的所有源文件和所有Java庫。

類路徑用於執行應用程序。這包括運行java應用程序所需的所有java類和庫。 Classpath是必需的,默認路徑是.,如果java虛擬機找不到用戶定義的路徑,則使用該路徑。 (CLASSPATH環境變量,-cp標誌或罐子清單中的Class-Path:屬性)

+0

但javac需要一個類路徑參數。可以說,這個參數「重載」用於指定構建路徑嗎? – aioobe 2010-08-20 10:00:45

+2

編號_classpath_參數是編譯器提示他應該在運行時提供/提供的參數,因爲您不會構建自己使用的每個類(例如JFC,Libraries,...)。 _buildpath_包含源和/或源/編譯的依賴關係以及在哪裏查找它們。 – 2010-08-20 10:18:17

+0

開發插件時,我將所有需要的庫添加到類路徑中,但無法導入任何內容。 Eclipse直到我將它們添加到構建路徑時纔看到它們。 – Bax 2012-10-11 13:25:16

3

每個Java項目都有自己的構建路徑,指定編譯項目所需的所有依賴項。這些依賴關係可能來自工作區中的其他Java項目,Java歸檔.jar文件或包含.class文件的文件夾。

在CLASSPATH環境中,您只需指定.class文件(即jar文件,zip文件 - 內部jar文件,zip文件只能找到java類),即您正在幫助Java虛擬機(JVM)查找Java類文件

而且我應該怎麼做才能創造一個Spring MVC的 項目的src目錄下的文件 ?當我創建使用文件 反對它創建的文件中 C:\ SpringSourceTool ...

這是JVM啓動後,如果你想別人創建文件,其中,使用從這裏相對路徑。

有關更多信息,請參閱thisthis

+0

你甚至沒有提到你的答案中的構建路徑。 – aioobe 2010-08-20 09:04:33

+0

感謝@aioobe,我最初錯過了,現在編輯。 – pavanlimo 2010-08-20 09:13:02

23

在運行時使用類路徑來加載編譯的類和資源。

編譯時使用構建路徑來查找構建項目所需的依賴關係。

+0

您可以說類路徑用於定位'.class'文件(和其他編譯資源),而構建路徑用於查找需要編譯的源文件嗎? – Adam 2017-02-25 00:49:53

+0

@亞當我不認爲這是完全正確的。構建路徑有時需要.class文件來編譯源文件。所以構建路徑也使用幕後的類路徑。如果您花費一些時間使用java CLI編譯和運行java項目,您可以看到這一點。 javac和java命令都有一個類路徑選項,因爲它們都可能需要它。 – 2018-01-19 20:46:14

38

classpath是通知Java編譯器和Java運行時找到編譯類的位置的常規方式。它通常是一系列JAR文件名和目錄名。由編譯器和運行時系統所使用的類路徑不必須相同,但它們通常「應該是*,尤其是對於一個小項目。

的Buildpath不是標準的Java術語,它是長期對於典型的IDE指定組成應用程序的「模塊」或「項目」之間關係的更豐富的方式,IDE使用它來找出編譯Java代碼的類路徑和源路徑以及運行它的類路徑。 IDE還使用構建路徑來找出如何將代碼及其依賴關係打包爲(例如)WAR文件。

例如,項目的Eclipse構建路徑包括其依賴的其他項目,並列出項目包含/依賴的其他任何項目庫JAR。它還列出了當前項目中下游項目可以依賴的軟件包。

(如果你使用Maven,爲您的項目中,IDE構建路徑機制是繼發於POM文件中聲明的依賴關係。例如,使用Eclipse與m2eclipse的,在構建路徑從POM文件合成。)

相關問題