gpt4 book ai didi

osgi - 包使用冲突 : Import-Package on startup of a bundle

转载 作者:行者123 更新时间:2023-12-04 00:40:26 26 4
gpt4 key购买 nike

尝试安装 htmlunit 包时出现以下错误:

com.springsource.com.gargoylesoftware.htmlunit_2.6.0 [370] could not be resolved.
Reason: Package uses conflict:
Import-Package: org.apache.commons.logging.impl; version="1.1.1"

我已按照 this blog 上针对此类问题的诊断程序进行操作。 .

这是我的发现:
捆绑 com.springsource.com.gargoylesoftware.htmlunit_2.6.0有以下说明:
Import-Package: \
org.apache.commons.logging;version="[1.1.1, 2.0.0)",\
org.apache.commons.logging.impl;version="[1.1.1, 2.0.0)"

在我的 OSGi 中,唯一在其使用约束中具有此约束的包是 com.springsource.org.apache.commons.logging ,其中包含以下说明:
Export-Package: \
org.apache.commons.logging;version="1.1.1",\
org.apache.commons.logging.impl;version="1.1.1";\
uses:="javax.servlet,
org.apache.avalon.framework.logger,
org.apache.commons.logging,
org.apache.log,
org.apache.log4j"

Import-Package: \
javax.servlet;version="[2.1.0, 3.0.0)";resolution:=optional,\
org.apache.avalon.framework.logger;version="[4.1.3, 4.1.3]";resolution:=optional,\
org.apache.log;version="[1.0.1, 1.0.1]";resolution:=optional,\
org.apache.log4j;version="[1.2.15, 2.0.0)";resolution:=optional

在这一点上,我被卡住了,因为我无法弄清楚问题是什么以及如何解决它,尽管从我上面提供的内容来看应该很清楚,但对我来说不是:(

任何想法......?

最佳答案

这很可能与“import-what-you-export”有关。

一个 uses约束声明“如果你想导入这个包,最好确保你使用的是与我相同的包”,这不仅意味着包的版本,还意味着由同一个包导出的相同包。
您的第二个捆绑包导出 logginglogging.impl包,说明“如果你想使用 logging.impl,请使用与我相同的 logging”,并且它也恰好导出了一个。这意味着任何想要导入 logging.impl 的人还必须导入 logging从您的捆绑包中,因为它不能连接到任何其他 logging包。
如果 logging 有另一个副本,这会导致问题。在框架中,这可能会更早解决。

解决这个问题的最简单方法可能是添加 loggingImport-Package你的第二个捆绑包。通过这种方式,您可以选择使用哪个包到框架。

在一个不相关的注释上,去掉所有这些 ";resolution:=optional语句,除非您的代码可以真正处理某些包不可用的情况。我会非常惊讶你的包可以在没有 javax.servlet 的情况下工作可用。

关于osgi - 包使用冲突 : Import-Package on startup of a bundle,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5504113/

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