在项目xxx - 构建路径问题的构建路径中检测到循环

Mau*_*uli 48 java eclipse osgi maven-2 bundle

我正在使用maven和eclipse将我的项目转换为OSGI包.Maven构建的东西很好,只是我现在在Eclipse中得到了上面的错误.我怎样才能找出导致这个问题的项目?有什么特别的观点吗?怎么会发生这种情况,我希望maven也能检测到循环依赖?

更新

好的,我在这里这里找到了一些东西

这可能是由felix maven-bundle-plugin引起的,它对每个导出也是一个导入吗?

小智 90

在Eclipse工具中将循环依赖项标记为"警告",以避免"在构建路径中检测到循环"错误.

在Eclipse中转到:

Windows - >首选项 - > Java->编译器 - >构建 - >循环依赖项

  • 这个答案是正确的,因为使用gradle的开源项目具有循环依赖性,并且它们在gradle上构建正常.日食不应该因为这个错误而哭泣 (4认同)
  • 我认为这不是一个合适的解决方案,因为我们应该始终解决循环依赖关系。 (2认同)

小智 12

当我们在工作区中有多个项目时,我们必须在项目之间设置引用,而不是在项目之间.如果P1引用P2,则P2引用P3,P3引用返回P1.这将导致一个循环.

解决方案是绘制工作空间中项目之间的参考图.检查每个项目的Java Build Path以查看Projects窗口的Tab.取出引用回主项目的项目,例如P3参考P1,在上面的例子中.

详细操作是在RAD OR eclipse中选择P3项目,右键单击项目并选择属性选项,它会为P3的属性打开一个新窗口.单击"Java Build Path"部分,选择"Projects"选项Tab.您可以在字段中看到P3已引用P1.选择P1参考,单击窗口右侧的"删除"按钮.然后,单击"确定".IDE将开始自动重置路径.

完成.

继续查找每个项目中所有错误引用的引用,直到您对图中的每个项目都有正确的引用.祝好运!

  • 但是如果存在P1引用的情况,则P2引用P1.例如.P1包含DAO层代码,P2包含实用程序.实用程序有时使用DAO层从DB表获取配置属性,DAO层使用实用程序.那么如何解决这个问题呢? (4认同)

小智 7

由于一个项目引用了另一个,我得到了这个.

  1. 删除从项目A到项目B的引用
  2. 尝试运行的东西,它会破碎
  3. 重新添加参考
  4. 清洁/清洁和建造
  5. 回到工作


Sam*_*cid 7

有时标记为警告

Windows -> 首选项 -> Java-> 编译器 -> 构建 -> 循环依赖项

不能解决问题,因为 Eclipse 不会编译依赖项中有另一个项目未编译的项目。

因此,要解决这个问题,您可以尝试强制 Eclipse 编译它能够编译的每个类。

为了做到这一点:

  1. 取消选择

Windows -> 首选项 -> Java-> 编译器 -> 构建 -> 发生构建路径错误时中止构建

  1. 清理并重建所有项目

项目 -> 清洁...

  1. 重新选择:

Windows -> 首选项 -> Java-> 编译器 -> 构建 -> 发生构建路径错误时中止构建

如果您选择了“自动构建”,则无需每次更改代码时都执行此操作


djn*_*jna 0

当我遇到这些问题时,Manifest.mf 中表达的依赖关系始终是一个真正的循环

因此,打开相关项目的清单,在“依赖项”选项卡上查看“所需插件”条目。然后从那里开始下一个项目,并重复,最终循环将变得清晰。

您可以通过使用“依赖关系”选项卡右下角的“依赖关系分析”链接来稍微简化此任务,这具有循环检测和更轻松的导航依赖关系。

我也不知道为什么Maven比较宽容,