我正在使用 AEM 5.6.1。当在控制台中手动安装 jax-b api 2.2.12 时,我的包中的 JAXB 出现异常。由于 JAX-b(2.1.0) 已通过以下捆绑包在 AEM 内部提供。当 2.2.12 不存在时,不会发生此异常。此外,如果在我的捆绑包之后安装了 jax-b 2.2.12,则完全没有问题。
然而,这个新版本正被不同供应商开发的另一个捆绑包使用。因此,我无法从 felix 控制台中删除这个新包。
提供原始 JAX-B 2.1.0 的系统包
`<dependency>
<groupId>org.apache.sling</groupId>
<artifactId>org.apache.sling.fragment.xml</artifactId>
<version>1.0.2</version>
</dependency>`
我只是想知道如何强制我的包忽略寻找 jax-b 2.2.12 并通过使用 maven pom 的某些配置仅采用系统默认 2.1.0 版本。特别是在 POM 中的 maven bundle 插件中。
在我的 ABC 类中激活方法:
`@Activate
public void activate(ComponentContext ctx) throws JAXBException {
abcContext = JAXBContext.newInstance(ABC.class);
}`
当前 Bundle 插件导入包定义:
<Import-Package>
*;resolution:=optional
</Import-Package>
例外:
16.03.2016 03:13:05.709 *ERROR* [Background Update foo.barsupport-bundle (606)] foo.barsupport-bundle [foo.bar.calendar.impl.CalendarEventParserImpl] The activate method has thrown an exception (javax.xml.bind.JAXBException
- with linked exception:
[java.lang.ClassNotFoundException: com.sun.xml.internal.bind.v2.ContextFactory not found by cqse-httpservice [25]]) javax.xml.bind.JAXBException
- with linked exception:
[java.lang.ClassNotFoundException: com.sun.xml.internal.bind.v2.ContextFactory not found by cqse-httpservice [25]]
at javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:241)
at javax.xml.bind.ContextFinder.find(ContextFinder.java:477)
at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:656)
at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:599)
at foo.bar.integration.calendar.impl.CalendarEventParserImpl.activate(CalendarEventParserImpl.java:33).
任何帮助将非常感激。