| ||||
Respuesta: clases java fuera de instalacion de jre Antes que nada gracias de antemano, mira yo tengo mi carpeta de proyecto llamada sct (iniciales del proyecto) a partir de la cual hay otra carpeta llamada sct que me la genera netbeans y dentro de esta ya esta la carpeta dist que es donde se me genera el jar del proyecto, asi como la carpeta src donde estan mis archivos .java y demas carpetas que genera netbeans. Para ejecutarlo yo tengo instalado mi java en C:\Archivos de programa\Java de donde salen las carpetas jdk1.6.0_03 y jre1.6.0_07, dentro de la carpeta lib\ext dentro de jre yo coloco mis archivos jar para los look and feel de java, librerias para manejos de excel, pdf, etc, lo que yo necesite y para correr mi jar desde linea de comandos invoco al jre dentro de esta carpeta y le paso como parametro la ruta de mi proyecto, otra forma para hacerlo "más portable" es copiar la carpeta del jre a la pc donde debo instalarlo y ejecutarlo de la misma manera (en este caso el jre de esa carpeta para correr mi jar). Hasta aqui todo bien, pero cuando actualizo mi jre en la carpeta de C:\Archivos de programa\Java se me crea otra carpeta nueva con el jre mas reciente y ahora esta es la actual(con los parches que libera sun), entonces debo copiar todas mis librerias a esta nueva carpeta y dar de baja la otra, seria agradable que mis librerias extras yo las tuviera en otra carpeta y asi al actualizar mi jre no tuviera que mover todo de nuevo y solo pasar como parametro la ruta de mi carpeta con las librerias extras para que mi aplicacion las pudiera encontrar, es posible hacer algo asi?, no es inconveniente grave pero si seria mas simple para mi, gracias de antemano por todo, saludos. |
| |||
Respuesta: clases java fuera de instalacion de jre Colocar los .jar en lib/ext dentro del JDK es una mala practica que desafortunadamente se ha extendido mucho, pero es mala idea por, entre otras cosas, los mismos problemas que te estas encontrando. Lo recomendable es aprender como funciona el concepto del CLASSPATH y configurarlo adecuadamente para nuestras aplicaciones. El "problema" es que distintas formas de aplicaciones (web, aplicaciones empaquetadas en .jar, aplicaciones de escritorio sin empaquetar...) configuran el classpath de forma ligeramente diferente, y mucha gente optar por la via rapida y facil, pero equivocada, de usar el directorio lib/ext. En tu caso, como la aplicación acaba generando un .jar, tienes dos opciones: .- La primera es arrancar la aplicacion configurando ese .jar, y los demas, en el classpath a través del flag -cp, y llamando a la clase principal. Con algo asi como "java -cp mi.jar;lib/miOtro.jar mi.clase" .- La segunda es configurar el MANIFEST.MF para que diga cual es el la clase principal y cual es el classpath, y entonces basta con hacer "java -jar mi.jar" Ojo que si lo llamas con java -jar, entonces el flag -cp no sirve de nada, y hay que configurar el MANIFEST. S!
__________________ Para obtener respuestas, pregunta de forma inteligente o si no, pregunta lo que quieras que yo contestaré lo que me dé la gana. |