A veces hacemos un programa java que tira de otros jar externos. Por ejemplo, si hacemos un programa de base de datos contra oracle, necesitamos el jar con el driver de oracle, es decir, el ojdbc14.jar. También podemos usar para sacar nuestros mensajes de error el log4j, y necesitamos el jar correspondiente log4j.jar
Cuando metemos nuestro programa en un jar, en nuestro fichero de manifiesto podemos poner que necesitamos esos jar externos. Sería algo como esto
Manifest-Version: 1.0
Class-Path: ./ojdbc14.jar ./log4j.jar
Main-Class: MiPaquete.MiClasePrincipal
Esto va más o menos bien. El problema es que junto con nuestro jar debemos entregar los otros jar. Es decir, nuestra aplicación está compuesta de tres jar, el nuestro, el de la base de datos y el del logger.
Hay una librería de sourceforge que permite empaquetar esos jar externos dentro de nuestro jar. De esta forma, dentro de nuestro jar meteríamos también el ojdbc14.jar y el log4j.jar, junto con nuestras clases.
De esta forma, nuestra aplicación se entregaría en un único MiPrograma.jar. Todos los demás jar necesarios estaría dentro.
Aunque no lo he probado todavía, parece que simplemente hay que bajarse el one-jar-boot.jar. Al desempaquetarlo salen varias clases y un fichero de manifiesto boot-manifest.mf. Ahora sólo tenemos que añadir a nuestro jar esas clases y ese nuevo fichero de manifiesto. Con ello, nuestro jar buscará los jar que indiquemos en el atributo "Class-Path" de nuestro fichero de manifiesto original, dentro del jar y no en el disco duro.
03 octubre 2005
Suscribirse a:
Enviar comentarios (Atom)
No hay comentarios:
Publicar un comentario