Incluir Mariadb en un proyecto OSGi

Si estás leyendo esto es porque finalmente he podido solucionar el problema que venía arrastrando de intentar importar el mariadb-java-client-x.y.z.jar (sustituir x, y, z por el número de versión) en mi proyecto basado en OSGi.

En un proyecto normal de Java la inclusión de jar externos es trivial, como la del driver que gestione una base de datos MySQL, perdón, MariaDB. Esto se hace de la siguiente manera:

String url = "jdbc:mariadb://"+host+":"+Port+"/"+DB;
String driver = "org.mariadb.jdbc.Driver";
...
Class.forName(driver);
...

Como digo es trivial, ya que el Class Loader se encarga de todo, pero qué c$%& ocurre si cambiamos de contexto a un entorno OSGi basados en plugins, perdón, bundles. Pues lo que ocurre es que la carga de clases y demás es totalmente distinto, de ahí mi quebradero de cabeza cuando veo esto en la consola de salida:

java.lang.ClassNotFoundException: org.mariadb.jdbc.Driver cannot be found by org.package_1.0.0

La solución más elegante que he visto, no sé si será así, pero no he visto otra es convertir el jar del driver en un plugin, digo, bundle e importarlo en mi bundle que necesita acceder a la base de datos. Haciendo esto queda totalmente resuelto el problema.

En resumen, debemos ir, en Eclipse, a File > New… > Other … > Plug-in from Existing JAR Archives. Seguir el asistente y luego importarlo en el MANIFEST.MF de nuestro bundle.

Otro detalle, en «Target Platform» yo he activado la opción de «Unzip the JAR archives into the project» y he elegido que el framework es el OSGi standard,

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.