style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">

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.
Imagen de ezamudio

Classpath es relativo

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

Imagen de samz550a

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

Imagen de ezamudio

jar/war/ear

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.

Imagen de benek

/WEB-INF/lib

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

Imagen de ezamudio

ese mero

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>

usa ide eclipse 3.5

puedes utilizar el IDE eclipse 3.5 que te genera un jar runnable jar file que incluye todos las librerias en tu jar y no necesitaras ninguna inclucion

@samz55a

Uno de los que mencionas se llama One jar.

Es basicamente como dices, descomprimir todos los jar y crear uno nuevo con el contenido de todos. Es lo que usa precisamente eclipse 3.5 que menciona ryky21

Imagen de 1a1iux

ONE jar

Yo creo que en algunos casos sirve y sirve de mucho tener todos los JArs dentro de uno sólo. Simplemente hay 0 configuración, mucha flexibilidad, la distribución de un sólo JAR en lugar de muchos puede ayudar, me consta.

Ya comentaron en un post anterior una herramienta que ayuda con esto, se llama ONE JAR.

Yo la recomiendo, absolutamente.

Sale y vale
Byte

Problema con el class path

No tengo tanta experiencia en java, y estoy intentando crear un .exe para java, encontre un tutorial para hacer eso, pero necesito poder hacer funcionar el .jar, pero tengo el problema del class path, estoy usando un conector para java con mysql mysql-connector-java-5.0.8-bin.jar.
Meto todas mis .class dentro del .jar, hago el manifest

Main-Class: baseventasMenufinal
Class-Path: mysql-connector-java-5.0.8-bin.jar
X-COMMENT: Mi primer archivo
el conectar de java con my sql esta dentro de la misma carpeta que el .jar donde estan todas mis .class, pero me genera un error

ejecuto mi jar
java -jar myjar.jar

y me aparec este error
Exception in thread "main" java.lang.NoClassDefFoundError: org/aspectj/lang/Signature
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Unknown Source)
at baseventasADfinal.(baseventasADfinal.java:30)
at baseventasMenufinal.(baseventasMenufinal.java:21)
at baseventasMenufinal.main(baseventasMenufinal.java:133)
Caused by: java.lang.ClassNotFoundException: org.aspectj.lang.Signature
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at sun.misc.Launcher$ExtClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 5 more

He intentado muchas veces, no me funciona, no importa que no quede tan practico, solo quiero que funcione.

Gracias

Imagen de Jairo Galvez Cordova

exception in thread main java.lang.noclassdeffounderror

Yo también tengo el mismo problema, otras aplicaciones me siguen funcionando bien, pero solo esta ultima me sale la exception al ejecutar el .jar. Cuando la ejecuto en netbeans 8.0 funciona perfecto pero cuando construyo el jar y lo ejecuto es cuando aparece este error:

Exception in thread "main" java.lang.NoClassDefFoundError: Gui/Ventana
at bibliotecader.BibliotecaDER.main(BibliotecaDER.java:30)
Caused by: java.lang.ClassNotFoundException: Gui.Ventana
at java.net.URLClassLoader$1.run(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 1 more
El ClassPath esta bien, mi directorio actual contiene el .jar y una carpeta con las librerías necesarias, no creo el el problema este por ese lado, repito esto sucede solo con esta ultima aplicación, no se por que no encuentra la clase; la he buscado dentro del .jar y si esta presente. Si alguien puede ayudarme le estaré agradecido

JarSplice

 

Como ya se ha sugerido, puedes combinar todos los JARs en un único sólo. JarSplice es un aplicación de escritorio en Java (un jar) que te ayuda en este proceso a través de una interfaz simple.

 

~~~

Imagen de Ziklónico

Yo también uso JarSplice y es

Yo también uso JarSplice y es una aplicación fantástica que también te recomiendo.

style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">