【问题标题】:Building Java projects with circular imports in Eclipse在 Eclipse 中使用循环导入构建 Java 项目
【发布时间】:2010-03-10 16:42:54
【问题描述】:

我有一个正在尝试在 Eclipse Galileo 中构建的旧版 Java(不是我的母语)应用程序。

因为它不是我自己的,所以我无法谈论设计的质量,但我遇到了很多情况,我会遇到这样的事情:

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

import com.acme.lib_b.onething;

另一方面,项目“lib_b”将包含:

import com.acme.lib_a.anotherthing;

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

在我看来,这在构建 Java 应用程序中一定是相当普遍的现象。在这里从头开始重写它不是一个选项,所以我想知道“其他人在做什么”。

【问题讨论】:

    标签: java eclipse circular-dependency


    【解决方案1】:

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

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

    【讨论】:

    • 错误是一个完全独立的问题 - 你没有提到它们是什么!
    • 它足以加载导入。但是,如果您的项目真的一团糟,并且它们有冲突的导入等,您最好手动构建一个最小的 jar 以包含在内。
    【解决方案2】:

    也许如果 onething 和 anotherthing 不是每个项目的核心部分(例如,实用程序类),那么您可以将一个移动到另一个项目中以使引用单向,或创建一个通用 util.jar。

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

    【讨论】:

    • 我喜欢 common util 的想法。它增加了一个额外的步骤,但它可以让我排除有问题的定义,这样我至少可以构建一个项目。在我可以将这些定义重新引入其原始类之前,公共库甚至可能是临时的。
    【解决方案3】:

    基本上是设计不佳的标志。可能的解决方案

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

    【讨论】:

      【解决方案4】:

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

      如果你不能在没有 B 的情况下使用 A 并且你不能在没有 A 的情况下使用 B 有单独的 JAR 文件似乎不是很有用。

      【讨论】:

        猜你喜欢
        • 2022-01-08
        • 2011-04-28
        • 1970-01-01
        • 2013-01-19
        • 2014-06-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-01-02
        相关资源
        最近更新 更多