SoloCodigo

Programación General => Java => Mensaje iniciado por: MercedesH en Lunes 29 de Septiembre de 2008, 15:55

Título: Ejecutar un Jar desde un aplicación
Publicado por: MercedesH en Lunes 29 de Septiembre de 2008, 15:55
Hola...Q tal...

Ya había hecho una pregunta similar, y me había funcionado pero ahora tengo otra duda, espero puedan ayudarme.

El punto es q tengo una aplicación en NetBeans, que debe ejecutar otra aplicación tambien en NetBeans.
Esto lo estoy haciendo con el getRuntime() pero no hace nada. Me pareciera q es un problema de cómo estoy pasando la ruta en el exec.

Suponiendo que el jar esta en el siguiente directorio : C:/Desarrollos/Ejecutar/Ejecutar.jar
Tengo lo siguiente:

Runtime obj = Runtime.getRuntime();
Process proc = obj.exec(java -jar C:/Desarrollos/Ejecutar/Ejecutar.jar);

Pero no ejecuta nada y tampoco retorna alguna excepcion que pueda capturar (de hecho no se como capturar en mi aplicacion una excepcion generada en la segunda aplicacion)

Espero que me haya explicado, de antemano gracias por su colaboracion
Título: Re: Ejecutar un Jar desde un aplicación
Publicado por: m0skit0 en Lunes 29 de Septiembre de 2008, 16:13
Prueba a ejecutar esto:

cmd.exe /c java -jar C:/Desarrollos/Ejecutar/Ejecutar.jar
Título: Re: Ejecutar un Jar desde un aplicación
Publicado por: MercedesH en Lunes 29 de Septiembre de 2008, 16:35
Gracias por responder, pero sigue sin funcionar :s

Se me olvido comentar que esa segunda aplicación utiliza ciertos parámetros que lee de un archivo de texto, el cual tengo en el mismo directorio del Jar, resulta que cuando pruebo esta aplicación directamente desde la linea de comando (java -jar C:/Desarrollos/Ejecutar/Ejecutar.jar) me arroja un error de que no consigue el archivo de texto... Puede ser q esta sea la causa de q no lo ejecute desde la primera aplicación utilizando el getRuntime() ????
Título: Re: Ejecutar un Jar desde un aplicación
Publicado por: m0skit0 en Lunes 29 de Septiembre de 2008, 16:42
Yo creo que sí. Adjúntale los argumentos y vemos. También puedes probar con

cmd.exe /k java -jar C:/Desarrollos/Ejecutar/Ejecutar.jar

a ver si ves el mensaje de error.
Título: Re: Ejecutar un Jar desde un aplicación
Publicado por: MercedesH en Lunes 29 de Septiembre de 2008, 17:02
Nada... Coloque el archivo txt en C, porq probando directamente desde la linea de comandos funciona asi...pero ejecutandolo desde la aplicación no funciona :S
Título: Re: Ejecutar un Jar desde un aplicación
Publicado por: m0skit0 en Lunes 29 de Septiembre de 2008, 17:12
Cita de: "MercedesH"
porq probando directamente desde la linea de comandos funciona asi...pero ejecutandolo desde la aplicación no funciona

No entiendo muy bien...

¿Has probado con cmd /k y añadiendo el argumento también? P.ej:

cmd.exe /k java -jar C:/Desarrollos/Ejecutar/Ejecutar.jar TUFICHERO.TXT

¿Has probado a ejecutar otra cosa para ver si realmente funciona? P.ej:

Process proc = obj.exec(C:/WINDOWS/NOTEPAD.EXE);

Otra cosilla: la ruta de obj.exec() ¿no debería ir entrecomillada o algo?
Título: Re: Ejecutar un Jar desde un aplicación
Publicado por: MercedesH en Lunes 29 de Septiembre de 2008, 17:38
ok..Te explico:

Yo probe esto desde la interfaz de comandos: C:> java -jar C:/Desarrollos/Ejecutar/Ejecutar.jar, colocando el archivo txt en C y funciona. Pero desde la aplicación, es decir con el getRuntime() no funciona. Y lo estoy colocando entre comillas.

Ahora desde ejecutar, colocando cmd /k o cmd /c  java -jar C:/Desarrollos/Ejecutar/Ejecutar.jar, no funciona.
Título: Re: Ejecutar un Jar desde un aplicación
Publicado por: m0skit0 en Lunes 29 de Septiembre de 2008, 17:47
Cita de: "MercedesH"
colocando el archivo txt en C

Supongo que te refieres a colocarlo en la raíz del disco C:

¿Podrías postear la parte del código Java que tenga que ver con el fichero de texto?
Título: Re: Ejecutar un Jar desde un aplicación
Publicado por: MercedesH en Lunes 29 de Septiembre de 2008, 17:52
Si lo copie en C..

OK, el archivo tiene ciertos datos de configuración que leo en el programa. Una parte de estas es la siguiente:

ip = ManejoArchivos.LeerArchivo("configuracion.txt", 2);
Título: Re: Ejecutar un Jar desde un aplicación
Publicado por: m0skit0 en Lunes 29 de Septiembre de 2008, 17:58
Ponle "C:configuracion.txt" y vuelve a probar. Así vemos si el problema reside en que no encuentra el fichero o en otra parte...
Título: Re: Ejecutar un Jar desde un aplicación
Publicado por: MercedesH en Lunes 29 de Septiembre de 2008, 18:15
Asi si funciona... Cómo puedo colocarlo para q lo lea del mismo directorio donde este el Jar?
Título: Re: Ejecutar un Jar desde un aplicación
Publicado por: shadow_rev en Lunes 29 de Septiembre de 2008, 21:30
Por lo que veo, tienes un problema de "enrutamiento", por así decirlo...

Cuando ejecutas java -jar C:DesarrollosEjecutarEjecutar.jar, va a buscar el archivo configuracion.txt desde el directorio donde se encuentre actualmente; o sea, si se ejecuta desde C:temp, el programa intenta acceder el archivo configuracion.txt en la carpeta C:temp. Intenta obteniendo la ruta absoluta del ejecutable dinámicamente (ni idea de cómo hacerlo :blink: , consulta en la documentación de Java), y esa ruta se la pones al llamado del txt.

:suerte:
Título: Re: Ejecutar un Jar desde un aplicación
Publicado por: m0skit0 en Martes 30 de Septiembre de 2008, 09:55
Mi opción preferida sería pasarle la ruta del fichero de texto al JAR como argumento (algo que nunca he probado). Mira a ver si te funciona esto:

Código: Java
  1.  
  2. public class Echo {
  3.     public static void main (String[] args) {
  4.         for (String s: args) {
  5.             System.out.println(s);
  6.         }
  7.     }
  8. }
  9.  
  10.  

Y lo guardas como Echo.jar. Si ejecutas java -jar Echo.jar "Hola" "Halo" "Hilo" debería aparecer como salida:

Código: Text
  1.  
  2. Hola
  3. Halo
  4. Hilo
  5.  
  6.  

Así podrías pasarle la ruta del fichero de texto como argumento, esto es, java -jar C:/Desarrollos/Ejecutar/Ejecutar.jar "C:configuracion.txt"

Y en tu código (no olvides declarar args[] como parámetro en main)

Código: Java
  1.  
  2. public static void main (String[] args) {
  3. [...]
  4. ip = ManejoArchivos.LeerArchivo(args[0], 2);
  5.  
  6.  

Cita de: "shadow_rev"
Intenta obteniendo la ruta absoluta del ejecutable dinámicamente

Application.ExecutablePath, pero no creo que funcione puesto que no hay ejecutable, sólo byte-code Java. Puedes probar esto también, a lo mejor funciona (teniendo el "configuracion.txt" en el mismo directorio que el JAR):

Código: Java
  1.  
  2. ip = ManejoArchivos.LeerArchivo(Application.ExecutablePath + "configuracion.txt", 2);
  3.  
  4.  

Espero haberme explicado, un saludo.
Título: Re: Ejecutar un Jar desde un aplicación
Publicado por: MercedesH en Jueves 2 de Octubre de 2008, 02:00
ok, gracias por responder... lo probaré...
Título: Re: Ejecutar un Jar desde un aplicación
Publicado por: Canabix en Miércoles 14 de Abril de 2010, 18:13
Prueba con este codigo, intenta con javaw
Código: Java
  1. try
  2.                 {
  3.                         Runtime r = Runtime.getRuntime();
  4.                         //Abrir Archivo JAR
  5.                         Process p=r.exec("JAVAW.EXE -jar Ejemplo1.jar");
  6.                 }
  7.                 catch(Exception ex)
  8.                 {
  9.  
  10.                         System.out.println(ex.toString());
  11.                 }
  12.