Error de requisito faltante de OSGI

Soy nuevo en OSGI y estoy tratando de averiguar cómo resuelvo errores como el que se muestra a continuación

org.osgi.framework.BundleException: restricción no resuelta en el paquete org.foo.serviceBundle [253]: no se puede resolver 253.0: falta el requisito [253.0] paquete; (& (package = org.slf4j) (version> = 1.6.0) (! (version> = 2.0.0)))

Utilicé un arquetipo de Maven para generar un paquete y agregué un registro slf4j simple a mi clase de Activator. También estoy usando el plugin de maven bundle de la siguiente manera:

 org.apache.felix maven-bundle-plugin 2.2.0 true   org.shoppingsite.Activator    

He probado otras combinaciones y obtengo un paquete u otro que no se puede resolver. Estoy intentando desplegar el paquete en el servidor de aplicaciones GlassFish. Cualquier ayuda será apreciada.

Gracias

Esto generalmente significa que le falta un paquete que exporta org.slf4j. Aquí está todo el flujo de trabajo:

  • Maven-bundle-plugin se asegurará de que el manifiesto de su propio proyecto importe org.slf4j (ya que lo necesita).

  • Las dependencias de Maven en el POM de su proyecto se asegurarán de que se descargue el artefacto slf4j

Entonces 2 cosas pueden ir mal:

  • O bien tu comstackción falló y no se encontró el artefacto slf4j (pero supongo que lo habrías notado)

  • o el artefacto slf4 que descargó no tiene un Manifiesto o no está exportando org.slf4j. Para comprobarlo, simplemente busque en el manifiesto del paquete org.slf4j. Si está ejecutando cosas directamente en un IDE como eclipse, es posible que desee revisar $ HOME / .m2 / en lugar de encontrar el artefacto.

Si su artefacto no tiene un manifiesto adecuado, tendrá que encontrar otro repository del que pueda obtener un paquete adecuado, o modificar el que está obteniendo e instalarlo en su repository local (e implementarlo en su repository de paquetes locales de maven (por ejemplo, nexus) si tiene uno)

Lo último: considere usar el complemento maven-scr en lugar de definir directamente activadores y descubrimiento de servicios. ¡Ojalá lo hubiera sabido cuando empecé con OSGi!

Si no desea pasar por la molestia de crear paquetes para cada biblioteca de terceros que utiliza, puede comstackrlo en su paquete. Tratar

  org.apache.felix maven-bundle-plugin 2.3.6 true   org.shoppingsite.Activator  slf4j-api;scope=compile, log4j;scope=compile     

No estoy seguro sobre Grassfish appserver. En Fuse ESB agregando org.slf4j. * , resolvimos el mismo problema.

Agregue proporcionado a las dependencias en el POM. Lea http://fusesource.com/docs/ide/7.1/release_notes/release_notes.html