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>`
maven pom を使用した構成によって、バンドルに jax-b 2.2.12 の検索を無視させ、システムのデフォルト 2.1.0 バージョンのみを取得させるにはどうすればよいか考えていました。具体的には、POM の Maven バンドル プラグインで。
私の ABC クラスでメソッドをアクティブにします。
`@Activate
public void activate(ComponentContext ctx) throws JAXBException {
abcContext = JAXBContext.newInstance(ABC.class);
}`
現在のバンドル プラグイン インポート パッケージの定義:
<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).
どんな助けでも本当に感謝しています。