AEM / CQ - javax.xml.namespace无法解析OSGI依赖关系

时间:2017-06-05 13:35:18

标签: java maven osgi aem

我正在使用AEM 6.2,而我目前正在实施WebService。 我在OSGI包中包含了所有依赖jar,这是我在外部创建的,所有依赖问题都解决了,除了一个:

  

javax.xml.namespace,version = [1.0,2) - 无法解析

当我使用depfinder工具检查maven时,它显示如下:

<dependency>
    <groupId>org.apache.sling</groupId>
    <artifactId>org.apache.sling.fragment.ws</artifactId>
    <version>1.0.2</version>
    <scope>provided</scope>
</dependency>

但是,在我的其他自定义项目中,javax.xml.namespace显示已解析状态。

我遇到了这种情况,任何指针都会非常感激。

谢谢, Jineet

2 个答案:

答案 0 :(得分:2)

如果仔细观察&#34; Package Dependency&#34;的输出。在工具中,您将看到 Maven 依赖项具有版本1.0.2。另一方面,此程序包的导出版本为0.0.0.fragment_xml

Package Dependency Tool java.xml.namespace exported version

我不知道为什么会这样,但这意味着您需要使用一些解决方法来解决此版本的捆绑包。

您基本要做的是更新MANIFEST.MF并将导入的版本从1.0.2更改为0.0.0.fragment_xml

我们正在使用Maven和maven-bundle-plugin插件来实现这一目标:

<plugin>
    <groupId>org.apache.felix</groupId>
    <artifactId>maven-bundle-plugin</artifactId>
    <extensions>true</extensions>
    <configuration>
        <instructions>
            <Import-Package>
                javax.xml.namespace;version="0.0.0.fragment_xml",
                *
            </Import-Package>
        </instructions>
    </configuration>
</plugin>

我希望这会有所帮助。

答案 1 :(得分:0)

maven central中有58个工件导出javax.xml.namespace,其版本与[1.0,2)匹配。一个安全的选择可能是来自servicemix的包装javaxp-api:

摇篮:

'org.apache.servicemix.specs:org.apache.servicemix.specs.jaxp-api-1.4:2.8.0'

的Maven:

<dependency>
    <groupId>org.apache.servicemix.specs</groupId>
    <artifactId>org.apache.servicemix.specs.jaxp-api-1.4</artifactId>
    <version>2.8.0</version>
</dependency>