Ambiente
AEM 6.x
Problema
Alguns pacotes configuráveis do OSGi não são iniciados na instância do AEM. Um erro semelhante ao mostrado abaixo é exibido quando os usuários tentam iniciar os pacotes com falha:
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)
Causa
Existem exportações OSGi duplicadas do mesmo pacote java com versões sobrepostas, conforme mencionado no erro.
Resolução
Leia atentamente a mensagem de log que informa exatamente quais pacotes configuráveis OSGi estão exportando o mesmo pacote java, conforme mostrado abaixo:
"está exposto ao pacote"javax.activation'de recursos org.apache.felix.framework [org.apache.felix.framework [0] (R 0)] e org.apache.sling.javax.activation [org.apache.sling.javax.activation [11] (R 11.0)] através de duas cadeias de dependência "
Portanto, há dois pacotes exportando javax.activation:
- org.apache.felix.framework - Pacote do Apache Felix Framework
- org.apache.sling.javax.activation- Fornecimento de pacote do Sling
Pesquisas adicionais mostram que o pacote do Sling pertence ao AEM e a exportação da estrutura javax.activation é inválida. As exportações de pacote do Framework podem ter a seguinte origem:
- Parâmetro da JVM para bootdelegation -Dorg.osgi.framework.bootdelegation
- Um pacote de extensões do Framework
- conf/sling.properties do AEM configurações org.osgi.framework.system.capabilities.extra e org.osgi.framework.bootdelegation
Se alguma dessas configurações for modificada para adicionar uma exportação para javax.activation, isso causaria o problema.