Ayuda con Class-Path dentro de Jar

Que tal buenas noches, espero me puedan ayudar, pro ya estoy bastante desesperado.

Lo que pasa es que he creado un Jar, llamado Proyecto.jar dentro de el... ya meto mis paquetes 5 para ser exactos una carpeta de imagenes.... y he intentado meter librerias, en este caso 2 entre ellas las de conexion con mysql.

He hecho de todo... Primero dentro de una carpeta lib/ los agrege y en el manisfest puse esto.

Manifest-Version: 1.0
Main-Class: Menu.MenuJFrame
Class-Path: lib/mysql.jar lib/napkinlaf.jar

y tambien puse

Class-Path: /lib/mysql.jar /lib/napkinlaf.jar

y tambien utilize lib/*.jar y otra fue sacarlos de la carpeta:

Class-Path: mysql.jar napkinlaf.jar

Espero de ke me puedan aconsejar, o komentar de ke demonios hago mal, pr ke en vdd estoy al borde del suicidio... bueno no es para tanto...

De atemano grax, y ke chido foro, el mejor para mi gusto encuanto a programacion y seguridad se refiere, todo unos idolos para mi... Saludos

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.

Classpath es relativo

Imagen de ezamudio

No sirve de nada poner jars dentro del jar de libreria. Tienes que poner en Class-Path de tu MANIFEST las referencias a los otros jars externos que necesitas, pero tienen que ser relativas como pusiste al final y solamente sirve si corres tu app con java -jar x.jar desde el directorio que contiene todos los jars. O bien, poner las referencias absolutas así:

Class-Path: /usr/local/lib/java/a.jar /usr/local/lib/java/b.jar

pero entonces ya no es portable la aplicación...

http://java.sun.com/docs/books/tutorial/deployment/jar/downman.html

Grax... me sirvio de mucho

Grax... me sirvio de mucho

pregunta

Segun tu comentario creo entender que ...por ejemplo añadir las librerias de conexión de bases de datos a mi_propio.jar para ser utilizadas no funciona.

Leí por ahí que hay algunos programas que lo hacen pero creo que descomprimen los .jar de las dependencias, copian los .class necesarios y empaquetan todo en el .jar que uno necesita.

Ahora en el primer caso, digamos que hago una aplicación muy sencilla... al instalarla en el pc del cliente (solo es un ejemplo donde copiaria el .jar de la aplicación en una carpetica por ahí) ¿como configuro la aplicación?...
Se me ocurre copiar las dependencias .jar al directorio "/jre/lib/ext" de la instalación de java y listo..., ---doble click al .jar y ejecutaria---... pero ¿hay una mejor solución o almenos mas elegante?

... y, en aplicaciones grandes ¿habrá que hacer un instalador? o ¿se copia el .jar de la aplicación en alguna carpeta y ya?...... ¿cuando se requeriria un instalador?

Agradezco de antemano las respuestas.

Saludos.

eso ha sido mi gran duda ,

eso ha sido mi gran duda , fijate que si trabajas con flex y java crear el war que contiene jar y ese jar contiene classpath
y luego comprimes todo en war no funciona pero si descomprimes todo en una carpeta sepra el jar y saca el classpath
si funciona , pero hay ejemplo donde meten todo en war luego suben al servidor y funciona todo no se como realemtne hacen eso
voy a ver como lo hacen y lo posteo

jar/war/ear

Imagen de ezamudio

un WAR o un EAR pueden contener jars en un directorio especial (no recuerdo ahorita cual) y se agregan automaticamente al classpath de la aplicacion, eso es un estandar en JEE.

Una aplicacion JSE necesita que se le indiquen todas las librerias que va a usar, por medio del parametro -cp al comando java. O se puede usar en el MANIFEST del jar el atributo Class-Path y se indican ahi los jars que se necesitan agregar al classpath, como ya lo mencione en el primer comentario.

/WEB-INF/lib

Imagen de benek

@ezamudio Supongo que te refieres al directorio "/WEB-INF/lib".

ese mero

Imagen de ezamudio

ese mero! WEB-INF/lib en un WAR, aunque en un EAR puede ser puro lib, o donde quieras, porque finalmente en el application.xml vas a indicar qué JARs quieres que tengan disponibles todas las aplicaciones del EAR:

<module><java>lib/something1.jar</java></module>
<module><java>something2.jar</java></module>
<module><java>META-INF/lib/something3.jar</java></module>