包使用冲突:捆绑包启动时的导入包

2024-04-23

尝试安装 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"

我已遵循此类问题的诊断程序这个博客 http://blog.springsource.com/2008/11/22/diagnosing-osgi-uses-conflicts/.

这是我的发现: 捆绑包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   

此时我陷入困境,因为我无法弄清楚问题是什么以及如何解决它,尽管从我上面提供的内容来看应该很清楚,但对我来说不是:(

有任何想法吗...?


这很可能与“导入你导出的内容”有关。

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

解决这个问题最简单的方法可能是添加logging to the Import-Package您的第二个捆绑包。这样,您就可以将使用哪个包的选择权留给框架。

在一个不相关的注释中,摆脱所有这些";resolution:=optional语句,除非您的代码确实可以处理某些包不可用的情况。我会非常惊讶你的捆绑包可以在没有javax.servlet可用的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

包使用冲突:捆绑包启动时的导入包 的相关文章

  • 如何从 OSGi 运行时环境中通过类名字符串加载类?

    我正在制作一个捆绑包来插入 OSGi 来为用户提供一个功能 Usercase User input the classname string and click list button the corresponding class wil
  • 可以在沙箱中运行的 Mini-OSGi(如 AppEngine 或 WebStart)?

    我真的很喜欢 OSGi 实现的模块化捆绑包的概念 我还喜欢 托管部署 服务 例如 Google AppEngine 用于 Web 应用程序 或 Java WebStart 用于客户端软件 这两个想法似乎在概念上很好地互补 然而 OSGi 标
  • 尝试在Eclipse中安装新功能(使用ADT作为基础包)

    当我尝试在 Eclipse 中安装新功能 使用 ADT 作为基础包 时 我得到 Installing Software has encountered a problem An error occurred while collecting
  • 如何在 Spring DM 中获取 BundleContext?

    我刚刚接触 Spring DM 我想访问 Bundlecontext 我的问题是我有一个包含 Activator 的捆绑包 但它没有 xml 配置文件 我无法触及这个捆绑包 那么我需要访问 BundleContext 和 serviceRe
  • 大型企业 Java 应用程序 - 模块化

    我在一家全国性的公司工作 所以我们开发的软件规模很大 我们的核心系统是基于网络的 包括webservices 我们目前正在重新设计整个项目 现在是开始项目结构的时候了 我们有大约 7 个 Web 模块 包括基于Struts2 and Spr
  • Maven SCR 插件 - 不生成 OSGI-INF 文件夹

    我的 SCR 插件无法正常工作 我已经尽可能多地进行了搜索 但只找到了与我需要使用的结构不相似的示例 下面是 POM 的片段 这些几乎是 CQ 项目原型生成的默认值 所有依赖项都在那里 所以可能不是这样 这是构建的输出 SLF4J Fail
  • 使用声明性服务的 OSGi+Pax-Web 中的 GWT 问题

    我正在迁移在 OSGi Equinox 和 Pax web 上运行的现有 GWT 应用程序 以使用声明式服务而不是编程式服务跟踪器 我在 Equinox 中使用 Pax Web PAX WEB War 扩展器可以毫无问题地加载基于 WAR
  • Karaf 和 OBR 中的功能有什么区别

    我正在研究部署和更新 OSGI 特别是 Karaf 应用程序的方法 似乎有几种选择 一是使用 OSGi Bundle Repository OBR 二是使用 Karaf 中的 Features 三是使用卡拉夫洞穴 http karaf ap
  • 如何从 jar 库创建 OSGi 包?

    如何从 jar 库创建 OSGi 包 如果您使用的是 eclipse 有一个向导 它允许您选择多个 jar 库并创建包含这些 jar 的插件项目 即 OSGi 包 你可以在这里找到它 File gt New gt Other gt Plug
  • 如何使用 OSGi 和 EE6 模块化企业应用程序?

    我知道已经有一些与该主题相关的问题 但我还找不到真正的解决方案 目前我正在使用 EE6 JPA CDI JSF 开发应用程序 我想采用一种更加模块化的方法 而不是将所有内容打包到 WAR 或 EAR 中并将整个内容部署在应用程序服务器上 我
  • 无法启动捆绑包 - 缺少要求(osgi.wiring.package)

    我是 Apache karaf 和 OSGI 的新手 我正在尝试编写并运行一个非常简单的包 但我在启动该捆绑包时收到此错误 执行命令时出错 在捆绑包上执行命令时出错 无法 解决 karaf 86 R 86 0 缺少要求 karaf 86 R
  • 覆盖 Maven-Bundle-Plugin 中的 Require-Capability

    我的问题类似于this one https stackoverflow com questions 38322981 how to override bnd require capability generated from ds anno
  • Spring MVC 控制器的运行时加载和动态映射请求/URL

    我们正在使用 Spring MVC 启动一个新项目 并且我们希望摆脱注释驱动的请求 url 映射 我们希望实现以下用例 用例A 用户输入 URL 请求映射处理程序检索映射列表 例如 从数据库 并基于此动态映射列表 它调用相关控制器 这是因为
  • 尝试在 Maven 中构建具有嵌入式依赖项的 OSGi 包。似乎无法从 BND 类路径中排除传递依赖项

    基本上 我的 Web 服务必须可部署为单个 OSGi jar 包 所以 该包必须包含所有编译和运行时 Maven 依赖项 它还必须包含依赖于这些依赖项的所有非可选依赖项 即传递依赖项 我正在尝试使用 maven bundle plugin
  • 将 JSP 包含到 sling servlet 中

    我目前正在开发一个小项目 试图帮助某人弄清楚如何连接组件 理想情况下我们想做两件事 有一个呈现模板的 jsp 我们所有的业务登录都在 SlingAllMethodServlet 中 servlet 定义要点 package definiti
  • 什么是 p2 存储库?

    我现在正在开发一个项目几个月 我们使用 p2 repositories 我知道我从他们那里得到了我的依赖 但现在我想更深入地研究这个主题 我想知道 p2 存储库到底是什么 定义 我认为这与 OSGi 和 Nexus 有关 但它从哪里来呢 当
  • OSGi:两个不同的捆绑包中具有相同的包路径

    I got a bundle1具有以下软件包 com anderson servlet osgi exported com anderson servlet com anderson util exported 还有第二个 bundle2
  • 将 AOP 与 OSGI 结合使用的最佳解决方案?

    我正在使用 Equinox 因此 Equinox Aspect 项目似乎是理所当然的 但该项目似乎处于非活动状态 并且只有一页文档 让我最终悬而未决 除了那个项目之外 我没有看到在 OSGI 中使用 AOP 的很多选项 让我知道你们的想法以
  • OSGi 应用程序设计 - 我是否滥用服务框架? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 在我们正在开发的应用程序中 我有一个供数据提供程序组件实现的通用接口 并且我将这些提供程序作为服务连接起来 我的一位同事建议 最好只创建一项可以
  • 有没有办法查看 OSGi 应用程序中注册的服务?

    我有一个运行 Equinox 的 OSGi 应用程序 我想查看该应用程序提供的服务 我怎样才能做到这一点 从 gogo shell 类型 inspect cap service 这将显示所有捆绑包注册的所有服务 如果您想显示特定捆绑包的服务

随机推荐