viernes, 3 de octubre de 2008

Confirmado! resuelto el Problema del Path en JAVA con JAR's

Desde que me quedé con la espinita de lograr el App.Path en Java con un *.JAR en Ubuntu 8.04 por otros medios, investigué más y lo encontré, el problema es que NO FUNCIONA cuando ejecutas el proyecto en NetBeans porque él lo ejecuta desde memoria, pero SI FUNCIONA DESDE FUERA jajajaja, pruébalo y veraz, en windows también funcionó igual ejecutando el *.JAR fuera del NetBeans. Eres muy Afortunado, muy pocos lo han conseguido y en Google solo aparecen 2 link's en inglés que se acercan. Bueno, como lo prometido es deuda:

java.io.File arc = new java.io.File(System.getProperty("java.class.path"));
try{
this.jTextField2.setText(arc.getAbsolutePath().replace(arc.getName(), ""));
catch (Exception ex){}

a diferencia del System.getProperty("user.dir") el System.getProperty("java.class.path") le indica al JRE de Java que devuelva la identificación de la ruta en donde las clases se almacenan, que es por ende el directorio donde está nuestro *.JAR.

Recuerda que sólo funciona fuera del NetBeans, así que para depurar podrías utilizar una variable pasada como argumento y utilizar user.dir que dentro del NetBeans si devuelve el path del proyecto, asi que concatena con "/dist/turecurso.ext".

Funcionó perfectamente en Ubuntu 8.04 y Windows XP con cuentas limitadas. Hasta la próxima y corre la voz sin olvidar dar crédito a mis aportes.

3 comentarios:

Maycol Alvarez dijo...
Este comentario ha sido eliminado por el autor.
Anónimo dijo...

me funciona!!!

Anónimo dijo...

hola, tenía el mismo problema en ubuntu, ya que por defecto siempre toma el directorio personal, bueno yo lo que uso es un string que me sirve tanto para cuando se esta en netbeans como para cuando se esta fuera, incluso funciona en windows.
Sabiendo que siemre la carpeta en donde se guardan las clases .java se llama src y que el jar que se genera de la aplicacion siempre serà el mismo en cada compilaciòn se me ocurriò lo sgte y... funcioná, solo reempleza "MiJar.jar" por el nombre real del jar generado por tu aplicación:

String strRuta=System.getProperty("java.class.path");
String strPath=(strRuta.indexOf(":")==-1?strRuta.replace("MiJar.jar", ""):strRuta.substring(strRuta.indexOf(":")+1).replace("src", ""));
JOptionPane.showMessageDialog(null,strPath);

la variable strPath contiene la carpeta en donde se encuentra el jar o el path de la aplicacion desde netbeans.. funciona para ambos casos... espero les sirva.

atte: piero