環境

AEM 6.x

問題点

一部の OSGi バンドルは、AEM インスタンスで起動できません。次のようなエラーは、ユーザーが失敗バンドルを開始しようとしたときに表示されます。

30.12.2016 13:11:44.069 *ERROR* [qtp1529861461-2584] org.apache.felix.http.jetty %bundles.pluginTitle: Cannot start (org.osgi.framework.BundleException: Uses constraint violation. Unable to resolve resource com.adobe.cq.dam.cq-scene7-imaging [com.adobe.cq.dam.cq-scene7-imaging [436](R 436.3)] because it is exposed to package 'javax.activation' from resources org.apache.felix.framework [org.apache.felix.framework [0](R 0)] and org.apache.sling.javax.activation [org.apache.sling.javax.activation [11](R 11.0)] via two dependency chains.

Chain 1:
  com.adobe.cq.dam.cq-scene7-imaging [com.adobe.cq.dam.cq-scene7-imaging [436](R 436.3)]
    import: (osgi.wiring.package=javax.activation)
     |
    export: osgi.wiring.package: javax.activation
  org.apache.felix.framework [org.apache.felix.framework [0](R 0)]

Chain 2:
  com.adobe.cq.dam.cq-scene7-imaging [com.adobe.cq.dam.cq-scene7-imaging [436](R 436.3)]
    import: (osgi.wiring.package=javax.mail)
     |
    export: osgi.wiring.package=javax.mail; uses:=javax.activation
  javax.mail [javax.mail [209](R 209.0)]
    import: (osgi.wiring.package=javax.activation)
     |
    export: osgi.wiring.package: javax.activation
  org.apache.sling.javax.activation [org.apache.sling.javax.activation [11](R 11.0)] Unresolved requirements: [[com.adobe.cq.dam.cq-scene7-imaging [436](R 436.3)] osgi.wiring.package; (osgi.wiring.package=javax.mail)])
org.osgi.framework.BundleException: Uses constraint violation. Unable to resolve resource com.adobe.cq.dam.cq-scene7-imaging [com.adobe.cq.dam.cq-scene7-imaging [436](R 436.3)] because it is exposed to package 'javax.activation' from resources org.apache.felix.framework [org.apache.felix.framework [0](R 0)] and org.apache.sling.javax.activation [org.apache.sling.javax.activation [11](R 11.0)] via two dependency chains.

Chain 1:
  com.adobe.cq.dam.cq-scene7-imaging [com.adobe.cq.dam.cq-scene7-imaging [436](R 436.3)]
    import: (osgi.wiring.package=javax.activation)
     |
    export: osgi.wiring.package: javax.activation
  org.apache.felix.framework [org.apache.felix.framework [0](R 0)]

Chain 2:
  com.adobe.cq.dam.cq-scene7-imaging [com.adobe.cq.dam.cq-scene7-imaging [436](R 436.3)]
    import: (osgi.wiring.package=javax.mail)
     |
    export: osgi.wiring.package=javax.mail; uses:=javax.activation
  javax.mail [javax.mail [209](R 209.0)]
    import: (osgi.wiring.package=javax.activation)
     |
    export: osgi.wiring.package: javax.activation
  org.apache.sling.javax.activation [org.apache.sling.javax.activation [11](R 11.0)] Unresolved requirements: [[com.adobe.cq.dam.cq-scene7-imaging [436](R 436.3)] osgi.wiring.package; (osgi.wiring.package=javax.mail)]
        at org.apache.felix.framework.Felix.resolveBundleRevision(Felix.java:4111)
        at org.apache.felix.framework.Felix.startBundle(Felix.java:2117)
        at org.apache.felix.framework.BundleImpl.start(BundleImpl.java:998)
        at org.apache.felix.framework.BundleImpl.start(BundleImpl.java:984)
        at org.apache.felix.webconsole.internal.core.BundlesServlet.doPost(BundlesServlet.java:365)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:644)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:725)
        at org.apache.felix.webconsole.internal.servlet.OsgiManager.service(OsgiManager.java:567)
        at org.apache.felix.webconsole.internal.servlet.OsgiManager$3.run(OsgiManager.java:465)
        at java.security.AccessController.doPrivileged(Native Method)
        at org.apache.felix.webconsole.internal.servlet.OsgiManager.service(OsgiManager.java:461)
        at org.apache.felix.http.base.internal.handler.ServletHandler.handle(ServletHandler.java:85)
        at org.apache.felix.http.base.internal.dispatch.InvocationChain.doFilter(InvocationChain.java:79)
        at com.adobe.granite.license.impl.LicenseCheckFilter.doFilter(LicenseCheckFilter.java:308)
        at org.apache.felix.http.base.internal.handler.FilterHandler.handle(FilterHandler.java:135)
        at org.apache.felix.http.base.internal.dispatch.InvocationChain.doFilter(InvocationChain.java:74)
        at org.apache.felix.http.sslfilter.internal.SslFilter.doFilter(SslFilter.java:89)
        at org.apache.felix.http.base.internal.handler.FilterHandler.handle(FilterHandler.java:135)
        at org.apache.felix.http.base.internal.dispatch.InvocationChain.doFilter(InvocationChain.java:74)
        at org.apache.sling.security.impl.ReferrerFilter.doFilter(ReferrerFilter.java:290)
        at org.apache.felix.http.base.internal.handler.FilterHandler.handle(FilterHandler.java:135)
        at org.apache.felix.http.base.internal.dispatch.InvocationChain.doFilter(InvocationChain.java:74)
        at org.apache.sling.i18n.impl.I18NFilter.doFilter(I18NFilter.java:129)
        at org.apache.felix.http.base.internal.handler.FilterHandler.handle(FilterHandler.java:135)
        at org.apache.felix.http.base.internal.dispatch.InvocationChain.doFilter(InvocationChain.java:74)
        at org.apache.sling.featureflags.impl.FeatureManager.doFilter(FeatureManager.java:116)
        at org.apache.felix.http.base.internal.handler.FilterHandler.handle(FilterHandler.java:135)
        at org.apache.felix.http.base.internal.dispatch.InvocationChain.doFilter(InvocationChain.java:74)
        at org.apache.sling.engine.impl.log.RequestLoggerFilter.doFilter(RequestLoggerFilter.java:75)
        at org.apache.felix.http.base.internal.handler.FilterHandler.handle(FilterHandler.java:135)
        at org.apache.felix.http.base.internal.dispatch.InvocationChain.doFilter(InvocationChain.java:74)
        at org.apache.felix.http.base.internal.dispatch.Dispatcher.dispatch(Dispatcher.java:124)
        at org.apache.felix.http.base.internal.DispatcherServlet.service(DispatcherServlet.java:61)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:725)
        at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:812)
        at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:587)
        at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:221)
        at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1127)

原因

エラーに説明されているように、重複しているバージョンと同じ java パッケージの重複している OSGi 書き出しがあります。

解決策

次のように、どの OSGi バンドルが同じ Java パッケージをエクスポートするかを示すログメッセージを注意深く読み取ります。

「リソース org.apache.felix.framework [org.apache.felix.framework [0](R 0)] および org.apache.sling.javax.activation [org.apache.sling.javax.activation [11](R 11.0)] からのパッケージ「javax.activation」に2つの dependency chain を介して expose されます。」

したがって、javax.activation をエクスポートする 2 つのバンドルがあります。

  1. org.apache.felix.framework - Apache Felix Framework バンドル
  2. org.apache.sling.javax.activation- Sling バンドルを提供

その他の調査では、sling バンドルが AEM に属していること、および javax.activation のフレームワークエクスポートが無効であることを示します。フレームワークのバンドルエクスポートは、次のようなものから派生できます。

  1. bootdelegation 用の JVM パラメーター - Dorg.osgi.framework.bootdelegation
  2. フレームワークの拡張バンドル
  3. AEM の conf/sling.properties org.osgi.framework.system.capabilities.extra および org.osgi.framework.bootdelegation の設定

これらの設定のいずれかが javax.activation の書き出しを追加するように変更されると、問題が発生します。

本作品は Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License によってライセンス許可を受けています。  Twitter™ および Facebook の投稿には、Creative Commons の規約内容は適用されません。

法律上の注意   |   プライバシーポリシー