在Eclipse中使用循环导入构建Java项目
我有一个遗留Java(不是我的母语)应用程序,我正试图在EclipseGalileo中构建它 由于这不是我自己的设计,我不能谈论设计的质量,但我遇到了许多这样的例子: 在一个名为“lib_a”的项目中,我将有一个包含以下内容的文件:在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文件,该文件可以作为外部存档
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中有一些公共部分应该重构为“公共”库
- 这两个库实际上是同一个库的两部分,应该合并
- 一个库依赖于另一个库的“内部”,应该引入一些接口来打破这种不好的依赖关系