2010-03-10 47 views
3

我試圖在Eclipse Galileo中構建遺留Java(而非我的母語)應用程序。在Eclipse中構建帶循環導入的Java項目

,因爲它不是我自己的,我不能到設計的質量說話,但我跨多個實例的來臨,我會是這樣的:

在一個項目叫,說「lib_a」,我有一個包含文件此:

import com.acme.lib_b.onething; 

項目,另一方面「lib_b」,將包含:

import com.acme.lib_a.anotherthing; 

當然,問題是,一個項目能不會是埠因爲這些錯誤阻止了我創建一個.jar文件,該文件可以作爲外部存檔添加到另一個項目中,反之亦然。

在我看來,這必須在構建Java應用程序相當屢見不鮮。從頭開始重寫它不是一個選項,所以我想知道「其他人做了什麼。」

回答

4

您可以在eclipse鏈接項目,所以你基本上宣告一個項目作爲另一個的依賴,就像聲明一個罐子。

項目: - >屬性 - >點擊「項目」選項卡,點擊「添加」,你可以選擇任何打開的項目。此外,eclipse跟蹤這些,以便當你打開「A」鏈接的項目「B」打開。

+0

不知道這會解決這個錯誤,但是。 – Buggieboy 2010-03-10 16:46:17

+0

錯誤是一個完全獨立的問題 - 你沒有提到它們是什麼! – 2010-03-10 16:48:25

+0

它將適用於加載導入。然而,如果你的項目真的搞砸了,而且他們有衝突的進口和類似的東西,那麼你最好還是手工製作一個小型的罐子來包裝。 – 2010-03-10 16:50:05

1

我只是將它們合併爲一個項目。

如果你不能使用的無B和你不能採用B不具有獨立的JAR文件似乎並不十分有用。

2

也許如果onething和anotherthing不是每個項目(例如,實用工具類)的核心部分,那麼你就可以移動到彼此的項目,以使引用單向的,或者創建一個共同的util.jar。

否則,如果它們是相互關聯的,在很大程度上我會合並項目。

+0

我喜歡常見的有用想法。它增加了一個額外的步驟,但它可以讓我把問題的定義分解出來,這樣我至少可以建立一個項目。公共圖書館甚至可能是暫時的,直到我可以將這些定義重新引入原始類。 – Buggieboy 2010-03-10 17:01:57

2

基本上是一個糟糕的設計的跡象。可能的解決方案

  • 中有2個庫共用部位應重構爲一個「共同」庫
  • 這兩個庫是真的兩半,同一個庫,並應結合
  • 一個庫爲依託在另一個庫的「內部」和一些接口應出臺打破這種壞的依賴