在Eclipse中使用循环导入构建Java项目

在Eclipse中使用循环导入构建Java项目,java,eclipse,circular-dependency,Java,Eclipse,Circular Dependency,我有一个遗留Java(不是我的母语)应用程序,我正试图在EclipseGalileo中构建它 由于这不是我自己的设计,我不能谈论设计的质量,但我遇到了许多这样的例子: 在一个名为“lib_a”的项目中,我将有一个包含以下内容的文件: import com.acme.lib_b.onething; 另一方面,项目“lib_b”将包含: import com.acme.lib_a.anotherthing; 当然,问题是一个项目无法构建,因为错误阻止我创建一个.jar文件,该文件可以作为外部存档

我有一个遗留Java(不是我的母语)应用程序,我正试图在EclipseGalileo中构建它

由于这不是我自己的设计,我不能谈论设计的质量,但我遇到了许多这样的例子:

在一个名为“lib_a”的项目中,我将有一个包含以下内容的文件:

import com.acme.lib_b.onething;
另一方面,项目“lib_b”将包含:

import com.acme.lib_a.anotherthing;
当然,问题是一个项目无法构建,因为错误阻止我创建一个.jar文件,该文件可以作为外部存档添加到另一个项目,反之亦然


在我看来,在构建Java应用程序时,这一定是一种相当常见的情况。从头开始重写它在这里不是一个选项,所以我想知道“其他人都做什么。”

您可以在eclipse中链接项目,因此您实际上是将一个项目声明为另一个项目的依赖项,就像声明一个jar一样


Project:->Properties->单击“项目”选项卡,单击“添加”,您将可以选择任何打开的项目。此外,eclipse会跟踪这些项目,以便在您打开“A”链接项目时,打开“B”

我只是将它们合并为一个项目


如果没有B就不能使用A,如果没有A就不能使用B,那么有单独的JAR文件似乎不是很有用。

如果一个东西和另一个东西不是每个项目的核心部分(例如,实用程序类),那么可以将一个移到另一个项目中,以单向引用,或者创建一个公共util.JAR


否则,如果项目在很大程度上相互关联,我会合并它们。

基本上是设计拙劣的标志。可能的解决办法

  • 2个lib中有一些公共部分应该重构为“公共”库
  • 这两个库实际上是同一个库的两部分,应该合并
  • 一个库依赖于另一个库的“内部”,应该引入一些接口来打破这种不好的依赖关系

错误是一个完全独立的问题-您没有提到它们是什么!它将足以加载导入。然而,如果你的项目真的一团糟,并且它们有冲突的导入等等,你最好手工构建一个最小的jar来包含它。它增加了一个额外的步骤,但它允许我考虑出有问题的定义,这样我至少可以构建一个项目。公共库甚至可能是临时的,直到我可以将这些定义重新引入到它们的原始类中。