如何在eclipse中解决项目中不同模块之间的循环依赖?

时间:2013-06-20 08:02:59

标签: java eclipse

eclipse中的问题日志显示“在项目的构建路径中检测到一个循环......”任何想法如何摆脱这些循环依赖?我不知道哪些项目相互依赖。

7 个答案:

答案 0 :(得分:14)

您可以在eclipse中调整循环依赖关系严重性:

Preferences > Java > Compiler > Building > Build path problems > Circular dependencies

答案 1 :(得分:2)

eclipse中的循环依赖表明Eclipse中的项目之间的构建路径中存在一个循环。

因此,如果你有5个项目,比如A,B,C,D和E,那么循环依赖可能是:

  1. A在其构建路径中需要B
  2. B在其构建路径中需要D
  3. D在其构建路径中需要A
  4. 因此A->B->D->A是一个循环。

    由于这个循环,Eclipse不知道首先编译哪个项目。

    您需要重构代码以消除此循环依赖关系。或者,如果实际代码没有这种依赖关系,请删除不必要的构建路径条目。

答案 2 :(得分:2)

在项目设置中,您可以看到依赖项,您可以做的是删除所有依赖项并逐个添加一个dep。循环意味着你不应该这样做。确定课程后的解决方案,让你的大项目A要求二级项目B的CB1级,CB1要求项目A的CA1级:

  • 移动项目A中的类CB1以删除依赖项 - >如果不创建更多依赖项,则可以正常工作。
  • 提取接口并使用非依赖接口(您可能需要根据结构创建超类或更多接口)。
  • 实现不同,为什么你特别需要来自其他项目的类?尝试使用常见的父类(如果有的话)

答案 3 :(得分:2)

有三种方法可以消除eclipse中项目之间的循环依赖关系,

1.转到项目 - > java compiler->建筑 - >启用项目特定设置。
选择构建路径问题并将警告作为循环依赖的选项。

2.转到project-> java构建路径。在“项目”选项卡中,选择项目并删除。

3.转到META-INF文件夹,打开MANIFEST.MF。在MANIFEST.MF视图选项卡中,您可以在“导入包:”列中查看循环相关项目。
从列中删除项目。

第一个选项并不能真正解决错误。第二个和第三个选项是解决此依赖关系的正确方法。

答案 4 :(得分:0)

要找出普通Java项目之间的依赖关系,请参阅项目属性| Java构建路径|项目。如果您有J2EE项目,Project Properties中还有一个附加设置项目参考。检查所有项目的那些,在一张纸(或屏幕)上构建图表,看看你可以做些什么来打破周期。

通常,健康的依赖关系图具有星形的形式,核心项目包含公共资源,每个叶项目实现一些特定的用户功能。具体而言,核心实际上可能包括几个相互依存的项目;对于较大的叶子也一样。

脱离依赖周期的典型方法是合并几个紧密耦合的项目。

答案 5 :(得分:0)

您可能需要重构项目或代码本身。与您的应用程序打包可能存在问题。

答案 6 :(得分:-1)

很久以前我遇到过这个问题,尽管我已经忘记了我是如何解决这个问题的,但是当谈到从所需项目中的一个班级到需求项目中的一个班级时,我有sendee在发送者中安装了一个java.lang.reflect.Method对象,可以调用该对象而不在发件人代码中声明sendee类。

我确定有更好的方法可以做到这一点,例如让发送方和服务方共享一个界面,但就编码经济而言,这似乎是最简单的。

正如其他答案似乎暗示的那样,这似乎不是真正的循环,而是Eclipse设计的神器。