Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 无法解析捆绑包修订,因为它通过两个依赖关系链暴露给包_Java_Osgi_Aem_Osgi Bundle - Fatal编程技术网

Java 无法解析捆绑包修订,因为它通过两个依赖关系链暴露给包

Java 无法解析捆绑包修订,因为它通过两个依赖关系链暴露给包,java,osgi,aem,osgi-bundle,Java,Osgi,Aem,Osgi Bundle,我的代码->程序包X(第三方程序包)->org.apache.commons.lang 2.6.0 我的代码->包Y(第三方包)->org.apache.commons.lang 2.4 我对X包和Y包都没有控制权 以下是我的错误: 02.04.2017 08:02:12.315 *INFO* [OsgiInstallerImpl] org.apache.sling.installer.core.impl.tasks.RestartActiveBundlesTask Unable to star

我的代码->程序包X(第三方程序包)->org.apache.commons.lang 2.6.0
我的代码->包Y(第三方包)->org.apache.commons.lang 2.4

我对X包和Y包都没有控制权

以下是我的错误:

02.04.2017 08:02:12.315 *INFO* [OsgiInstallerImpl] org.apache.sling.installer.core.impl.tasks.RestartActiveBundlesTask Unable to start bundle com.mynews.my-wcm-bundle [394] : Uses constraint violation. Unable to resolve bundle revision com.mynews.my-wcm-bundle [394.11] because it is exposed to package 'org.apache.commons.lang.math' from bundle revisions com.mynews.my-wcm-dependencies-bundle [395.39] and com.day.commons.osgi.wrapper.commons-lang2 [45.0] via two dependency chains.

**Chain 1:**
  com.mynews.my-wcm-bundle [394.11]
    import: (&(osgi.wiring.package=org.apache.commons.lang.math)(version>=2.6.0)(!(version>=3.0.0)))
     |
    export: osgi.wiring.package=org.apache.commons.lang.math
  com.mynews.my-wcm-dependencies-bundle [395.39]

**Chain 2:**
  com.mynews.my-wcm-bundle [394.11]
    import: (osgi.wiring.package=com.day.cq.security)
     |
    export: osgi.wiring.package=com.day.cq.security; uses:=com.day.cq.commons
  com.day.cq.cq-security-api [283.0]
    import: (osgi.wiring.package=com.day.cq.commons)
     |
    export: osgi.wiring.package=com.day.cq.commons; uses:=org.apache.commons.lang.time
  com.day.cq.cq-commons [264.0]
    import: (&(osgi.wiring.package=org.apache.commons.lang.time)(version>=2.4.0)(!(version>=3.0.0)))
     |
    export: osgi.wiring.package=org.apache.commons.lang.time; uses:=org.apache.commons.lang.math
    export: osgi.wiring.package=org.apache.commons.lang.math
  com.day.commons.osgi.wrapper.commons-lang2 [45.0]

如果您查看这些链,您会发现一个包需要commons lang版本[2.4,3],另一个包需要commons lang版本[2.6,3)。因此,如果您确保只安装commons lang 2.6,那么您的捆绑包应该可以解决问题。

我同意,但一些第三方JAR需要commons lang 2.4,因此我必须保留2.4。在这种情况下,我认为您无法使用当前的捆绑包集解决问题。也许第三方LIB的升级可以帮助解决问题。一般来说,尽量不要公开第三方pa在您自己的捆绑包中公开API。这才是导致这些链出现问题的真正原因。什么是“尽量不在您自己的捆绑包中公开第三方API”?a)不将第三方软件包包含在my bundle中?或b)不嵌入第三方JAR,这意味着导出的软件包中不应使用您导入的软件包中的类。在您的情况下,您在导出的软件包中似乎使用了commons time中的某些内容。这会暴露导入您的软件包的软件包e到commons时间类,这就是导致uses约束冲突的原因。您说过“您的包中导出的包不应使用您导入的包中的类”。试图理解此声明。如果您看到此屏幕截图,我的包名为com.aprilcompany.aprilproject。它需要一些第三方包,我正在通过依赖项包导入它们。我觉得,在这里,导出和导入是必要的。