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