2013-04-12 74 views
5

有幾個關於這種命中的問題,但我對Java開發完全陌生,我不知道解決這個問題的正確方法。在Java中,我應該創建一個新的包,文件夾或源文件夾嗎?

我有一個C#解決方案,包含兩個項目(我的應用程序和一個單元測試項目)和應用程序內,大多數事情都放在文件夾中,例如。接口,異常等

我想在Java/Eclipse中重新創建這個,但我不知道如何。我結束了很多包裝,這聽起來很糟糕。我也嘗試添加一個源文件夾,但最終不在包內。

任何人都可以指向正確的方向嗎?

也就是說,我應該使用哪些來表示我的單元測試項目/單元測試集,以及僅存在用於組織東西的子文件夾。

編輯:它也表示不建議使用默認包。我該怎麼做?

編輯2:這是它的樣子。這看起來有點模糊嗎?我最初的C#解決方案在右側。

My Layout

+0

有大量的包沒有任何錯誤;如果這些軟件包是明智的。 –

+0

http://maven.apache.org/guides/introduction/introduction-to-the-standard-directory-layout.html例如 – user1516873

回答

2

在一個典型的java eclipse項目中,您將有一個或多個源文件夾(例如一個用於應用程序代碼,一個用於您的單元測試)。

每個文件夾都包含一個包樹,通常以您的基本包開始,例如com.mycompany.myapp

爲避免名稱衝突,軟件包名稱通常以作爲代碼作者的實體的域名開頭,從頂級域開始並向後(更一般地指向更具體的)。這樣,每個類的完全限定名稱都是唯一的。例如,如果google創建一個名爲List的類,它將被稱爲com.google.List,並且它不會與現有的java.util.List接口發生衝突。

你可以有包的數量不受限制此基礎包中,例如:

com.mycompany.myapp.persistence 
com.mycompany.myapp.domain 
com.mycompany.myapp.services 
com.mycompany.myapp.web 

這一切都取決於你的項目,你想組織你的代碼和你的類的方式。

在邏輯層面,軟件包以點作爲分隔符來命名。它們包含Java類。

在物理磁盤級別,每個軟件包都是一個目錄。 Java類包含在.java文件中(每個文件最常用一個類)。

在Eclipse中,「源文件夾」是項目中的一個文件夾,Eclipse已知它包含Java源文件。當你建立你的項目時,它將被編譯到輸出中(例如JAR文件)。

在Eclipse中,您通常在邏輯層次上查看它們,顯示包。當你告訴Eclipse「創建一個新包」時,它會爲你創建目錄。例如,如果您告訴它創建com.mycompany.myproject程序包,它將自動創建一個包含mycompany文件夾的com文件夾,其中包含myproject文件夾。

+0

所以我應該做我以上所做的事情,但將我的所有軟件包嵌入到初始包中? – NibblyPig

+0

是的,基本上是這樣。當前「默認包」中的類將直接位於您的項目基礎包中,其他包將嵌套在其中。一定要選擇一個能夠識別您的項目的軟件包,而不僅僅是您的實體。所以如果你以後創建其他項目,他們有不同的基礎包。 –

+0

正如其他人所說,在許多情況下,使用Maven作爲構建工具也是可取的。 Maven爲不同類型的項目(它們被稱爲原型)提供了默認的項目結構,它們將主要來源,測試來源,資源等分開。這些通常是非常明智的,而且您還可以獲得許多其他好處,這是恕我直言所依賴的(JAR)管理中最大的。 –

1

Java源樹結構必須匹配封裝結構

所以foo.bar包必須在

SRC /富/酒吧進行佈局

另外默認包可能不被建議 - 但你仍然可以使用它 - 更好的東西在一個包雖然

+1

通常'/ src/foo/bar'表示源在'/ src'和類'foo.bar'包含在'/ src/foo/bar'文件夾中 –

+1

只需要注意,如果您熟悉C#,可以將包視爲C#中的命名空間。這個概念非常相似。 – jnovacho

+0

@Mark Rotteveel - 斑點 - 編輯 – gheese

0

在java不同的項目發展結構按項目類型分流。 因此,您剛剛接觸java和Eclipse,所以最好安裝maven插件並創建maven項目,並根據項目類型(如獨立或基於Web)選擇原型。 maven插件將創建項目結構,包括包,測試包源文件夾等。您可以從this

0

獲得更多關於項目結構的信息。使用默認包可能會創建命名空間衝突。想象一下,你正在創建一個包含MyClass類的庫。有人在你的項目中使用你的庫,並且在他的默認包中也有一個MyClass類。編譯器應該做什麼? Java中的包實際上是一個完全標識你的項目的名稱空間。因此,不要在現實世界的項目中使用默認包。

相關問題