martes, 10 de enero de 2012

Referenciar librerías jar en un ejecutable .bat

Esta mañana he estado intentando crear un ejecutable .bat en windows donde ejecutaba un fichero jar. He tenido problemas a la hora de referenciar las librerías. El error que me daba era:

exception in thread main java.lang.noclassdeffounderror

Ahora os voy a explicar como lo he solucionado.

Hay dos formas de referencias las librerías: una es escribiendo por comando en nuestro fichero .bat y la otra, que es la recomendada, referenciándolo en nuestro manifest.
Si queremos escribirlo por comando podemos hacer de la siguiente forma:

REM Classpath 

set JAR=D:\MiProyecto\lib
set CP=%JAR%\conn.jar
set CP=%CP%;%JAR%\plaf.jar
set CP=%CP%;%JAR%\adaptadorjvm.jar
...

java -classpath "%CP%" -jar miPrograma.jar

Ésto sería para Windows. En Linux sería con la otra barra.
Y si tenemos la versión 6 de java en adelante, es tan simple como:

java -classpath lib\* -jar miPrograma.jar

La otra forma y la recomendada es editando nuestro archivo META-INF\manifest.mf. Para ello escribimos:

Manifest-Version: 1.0
Class-Path: lib\librería1.jar lib\librería2.jar lib\librería3.jar
Main-Class: miPrograma.interfaz.VentanaPrincipal

Y escribimos esto en el ejecutable .bat para lanzarlo:

java -jar miPrograma.jar 

Si estamos trabajando con IDE's, éstos, al crear el ejecutable jar nos pedirán si queremos crear el manifest o cargar uno. Si elegimos cargar uno, creamos un manifest.txt, escribimos lo anterior, y el IDE nos creará automáticamente el manifest.mf.

No hay comentarios:

Publicar un comentario