簡體   English   中英

如何在 Eclipse 中同時構建我的自定義 java 包和項目?

[英]How do I do in Eclipse to build my custom java package and project at the same time?

據說一個 java 包可能包含類、接口、枚舉,......但我一直在網上尋找,但我仍然沒有找到我要找的東西......當我看到包信息文件時,他們也包含類...我的想法是包在同一個文件中定義類、接口等,但類的代碼應該在一個單獨的類文件中,不是嗎?

我是否應該在為 Eclipse 創建的每個類中命名相同的包,以便將它們放在同一個包下而不需要包信息文件? 另一方面,Eclipse 真的有必要為每個包創建一個 treedir 嗎? 我可以在類所在的包文件中定義嗎? 包信息文件的內容是什么?

也有人說當你要使用一個包時,它應該是 .jar 格式......是真的嗎?

我想要做的是構建一個通用的自定義包以在多個項目中使用它,但我想將它鏈接而不是復制到每個項目,所以我只修改一次代碼......這在 Eclipse 中可能嗎?

想法 1:+ 包含類的所有定義和位置的包文件 + 一堆按主題分布在不同文件夾中的類 + eclipse 將使用鏈接的包文件在包含包中引用的類的文件夾樹中創建一個包。

想法 2: + 沒有包文件 + 每個類將通過包含包名稱來說明哪個包在其中 + eclipse 將與引用相同包的一組鏈接類一起工作,這就是它在項目樹中創建的內容。


更新 20180904:

  • 我想將所有類存儲在一個單獨的文件夾中,例如“.../classes/*.java”

  • 我計划在 Eclipse 環境允許的情況下其中一些類鏈接到一個包下,比如“.../src/com.dataproc/class1.java ...”

  • 我想編譯包並為我正在開發的項目和特殊目錄中的其他項目做好准備,比如“.../mylib/common/*.jar

  • 當我說“同時”時,是因為我想在相同的環境中工作,為我的包和我的項目創建類。

正如您可能認為的那樣,我仍然是 Java 和 Eclipse 的新手,但是,嘿,渴望學習! 我不得不說我查看了提到的有關包的 Oracle 信息,但我仍然不清楚如何繼續。 這對我來說太基礎了,所以我不明白我是否必須在每個類 java 文件中聲明包或在某個 package-info.java 文件中聲明我想要的所有類,我所知道的是我必須使用“在我的項目中導入 mypackagename.*"...

任何幫助或方向都非常感謝。


更新 20180926:這個問題已經從這個相關問題得到解決

首先我嘗試澄清java packagepackage-info.java文件和JAR文件的含義。

Java 包的概念獨立於您用於開發的 IDE。 來自Oracle 文檔 - 創建和使用包Java 包是一組提供訪問保護和名稱空間管理的相關類型。 請注意,類型是指類、接口、枚舉和注釋類型。

要點是:同一個包中的類可以訪問彼此的包私有成員和受保護成員 當您必須在包中組織源代碼時,這是您必須考慮的關鍵因素。


package-info.java文件的主要目的是為應用於包的注釋創建一個空間,除了為包級 javadoc 提供一個家。 [ Joseph D. Darcy 的 Oracle 博客]


JAR代表Java 歸檔 它是一種基於流行的 ZIP 文件格式的文件格式,用於將多個文件聚合為一個。

因此JAR文件格式是用於將許多 Java 類文件和關聯的元數據和資源(文本、圖像等)聚合到一個文件中進行分發的主要標准。


我想要做的是構建一個通用的自定義包以在多個項目中使用它,但我想將它鏈接而不是復制到每個項目,所以我只修改一次代碼......這在 Eclipse 中可能嗎?

如果你想正確地做到這一點,你必須按如下方式構建你的項目:

  • 在一個特定的項目中組織可重用的組件,從現在開始稱為A。 A可以根據需要包含任意數量的包。 一個需要被構建和部署,以提供給其他客戶。 有一些工具可用於幫助您滿足這些要求(最常用的 Java自動化構建工具MavenGradle )。
  • 項目編譯源代碼是一個JAR文件格式提供。
  • 其他項目可以重用A提供的功能,假設B是一個依賴於A的項目:為了重用A的組件,項目A jar 文件必須在B的類路徑中可用。
  • 在您的項目開發過程中,您的 IDE 可以輕松滿足這些要求,但是當您必須分發最終產品時,前面提到的工具是最佳解決方案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM