gpt4 book ai didi

java - 使用约束冲突。无法解析资源 -javax.xml.bind.annotation 和 jakarta.xml.bind-api

转载 作者:行者123 更新时间:2023-11-30 06:40:37 38 4
gpt4 key购买 nike

我搜索了 loooooot,但找不到解决我的问题的方法。

我正在使用 osgi、karaf 和 java 8。

我有一些模块,例如:

网络服务之类的在这个模块中可以说 API、PERSISTENCE、ADAPTER

persistence 和 api 启动正常,但适配器给出了错误:

Uses constraint violation. Unable to resolve resource adapter [adapter [288](R 288.2)] 
because it is exposed to package 'javax.xml.bind.annotation' from resources
org.apache.felix.framework [org.apache.felix.framework [0](R 0)] and
jakarta.xml.bind-api [jakarta.xml.bind-api [79](R 79.0)] via two dependency
chains.

链在适配器和 api 中。

但这意味着什么?

我可以将它作为功能安装,它们都会启动,但我的另一个包将放在 GracePeriod 上,如果我在 karaf 上进行 DIAG,它会说:

Status: GracePeriod
Declarative Services
Blueprint
01/09/19 19:00
Missing dependencies:
(&(osgi.unit.name=example_db)(objectClass=javax.persistence.EntityManager))

请注意,我还有其他网络服务模块,其中一些工作正常,我检查了 pom,它们具有相同的依赖关系和相同的版本

数据源也很好,我已经尝试添加一些功能,如 hibernate.entityManager,但它不起作用。

最佳答案

根据您提供的有限信息,您很可能在运行时通过不同的包导出了同一包的两个版本。

这本身不是问题,但如 this answer 中所述当

  • 捆绑 A需要来自 B 的包裹和来自 C 的包裹
  • 捆绑 B需要来自 C 的相同包的不同版本

在您的特定情况下,有问题的包裹似乎是 javax.xml.bind.annotation似乎以 2 个不同的版本导出 org.apache.felix.framework捆绑和 jakarta.xml.bind-api捆绑。

如果不知道您要安装的 bundle 的确切要求和功能,很难说什么是解决该问题的最佳方法。

更新:

这里有一些你可以用来调试情况的东西:

  • 调用 package:exports | grep javax.xml.bind.annotation会告诉你哪些包以什么版本导出包
  • 调用 package:imports | grep javax.xml.bind.annotation会告诉你哪些包在什么版本导入包
  • 调用 bundle:diag <YOUR_BUNDLE_ID>将为您提供捆绑 Unresolved 详细信息

关于java - 使用约束冲突。无法解析资源 -javax.xml.bind.annotation 和 jakarta.xml.bind-api,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57748365/

38 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com