• Martes 19 de Noviembre de 2024, 15:51

Autor Tema:  ejecutar .exe con parametros y excepciones...  (Leído 7118 veces)

Edgpaez

  • Nuevo Miembro
  • *
  • Mensajes: 5
    • Ver Perfil
ejecutar .exe con parametros y excepciones...
« en: Martes 13 de Enero de 2009, 21:22 »
0
Hola........

Estoy haciendo una pequeña interfaz para un .exe....
debo enviarle dos strings y dos archiovos como parametros, como lo hago ??
Asi lo estoy haciendo:
 p = Runtime.getRuntime().exec("primer string" + "string de la ruta del archivo" + "String de la ruta del archivo " + "segundo string");
esta bien ?

Ahora, el programa me puede generar errores, para mostrarlos uso el getInputStream();, pero cuando se genera un error, se crea la excepcon y no llega a la parte en que lo capturo, y no lo puedo poner antes ¬¬, ese codigo me sirve cuando el comando se ejecuta sin problema.....osea puedo ver lo que cmd me mostraria
pero cuando hay errores no veo nada......

Ahora, quisiera que el .exe que debo ejecutar este dentro de una carpeta dentro del .jar, es esto posible ?
Como consigo la ruta absoluta de este ?

Gracias !! :comp:

shadow_rev

  • Miembro MUY activo
  • ***
  • Mensajes: 397
  • Nacionalidad: co
  • Un SPARTAN no muere en combate
    • Ver Perfil
    • http://shadowrev.blogspot.com
Re: ejecutar .exe con parametros y excepciones...
« Respuesta #1 en: Martes 13 de Enero de 2009, 22:14 »
0
Lo que ejecutas lo estás poniendo en un bloque try - catch ??

Si no es así, en el bloque catch puedes mostrar los errores de la forma como lo estas haciendo. En cualquier caso pon el código donde lo estas haciendo.

En cuanto a empaquetar el .exe en el mismo jar, creo que no se puede (no debería)

:suerte:
Volará quien le ponga alas a sus sueños (Candidate for goddess)
Si el mal existe en este mundo, reside en el corazón de la humanidad (Edward D. Morrison - Tales of Phantasia)
Lo único que puedes cambiar del pasado, es lo que sientes por él en el presente (Lockon Stratos - Mobile Suit Gundam 00)
Ingeniero de Sistemas

Edgpaez

  • Nuevo Miembro
  • *
  • Mensajes: 5
    • Ver Perfil
Re: ejecutar .exe con parametros y excepciones...
« Respuesta #2 en: Martes 13 de Enero de 2009, 22:22 »
0
Claro  ^_^  dentro de try catch:
void Execute()throws IOException{
        p = Runtime.getRuntime().exec("make " + Asm.getAbsolutePath() + " " + Raw.getAbsolutePath() + getBase());
        InputStream is = p.getInputStream();
        BufferedReader br = new BufferedReader(new InputStreamReader(is));
        String test = br.readLine();

        while (test != null) {
                        System.out.println(test);
            test = br.readLine();
        }

y cuando oprimo el boton:
            if (d == 0) {
                try {
                    Execute();
                    Runtime.getRuntime().exec("C:/Archivos de programa/Internet Explorer/iexplore.exe URL"); //Hay alguna otra forma de hacer esto ? para no denpender de la ruta de instalacion del explorer ?
                } catch (IOException ex) {
                    JOptionPane.showMessageDialog(null, "Bloody mistake");
                }

La cosa es que si lo hago asi:
            if (d == 0) {
                try {
p = Runtime.getRuntime().exec("make " + Asm.getAbsolutePath() + " " + Raw.getAbsolutePath() + getBase());
                } catch (IOException ex) {
                            InputStream is = p.getInputStream();
        BufferedReader br = new BufferedReader(new InputStreamReader(is));
        String test = br.readLine();

        while (test != null) {
                        System.out.println(test);
            test = br.readLine();
        }
Me genera error, pues p solo esta declarado en el try, no en el catch, pero yo creo que solo deberia crear el bufferreader y el input strean cuando hay error, si no hay pues no lo necesito :P
DAMNED !! Entonces tendre que poner el .jar dentro de la misma carpeta del .exe  :bad:

Me entiendes ?
Saludos y Gracias  :beer:

shadow_rev

  • Miembro MUY activo
  • ***
  • Mensajes: 397
  • Nacionalidad: co
  • Un SPARTAN no muere en combate
    • Ver Perfil
    • http://shadowrev.blogspot.com
Re: ejecutar .exe con parametros y excepciones...
« Respuesta #3 en: Jueves 15 de Enero de 2009, 14:54 »
0
mmm, bastante extraño el problema...  :blink:

Se me ocurre inicializar la variable p por fuera del bloque try, pero para ello creo que debes implementar una clase que herede de Process (ya que no puedes instanciar una clase abstracta). Por cierto, ya has consultado la información que arroja la excepción ?? Puede que te ayude a ver el error en vez de usar Streams para leer directamente la salida del proceso.

:suerte:

PD: Por favor, usa la etiqueta [CODE] para el código fuente.
Volará quien le ponga alas a sus sueños (Candidate for goddess)
Si el mal existe en este mundo, reside en el corazón de la humanidad (Edward D. Morrison - Tales of Phantasia)
Lo único que puedes cambiar del pasado, es lo que sientes por él en el presente (Lockon Stratos - Mobile Suit Gundam 00)
Ingeniero de Sistemas

Edgpaez

  • Nuevo Miembro
  • *
  • Mensajes: 5
    • Ver Perfil
Re: ejecutar .exe con parametros y excepciones...
« Respuesta #4 en: Jueves 15 de Enero de 2009, 15:32 »
0
:good:
Gracias man....

Ahora lo que intente sin InputStrem ni nada y la excepcion, la pongo en String y la mando por un JOption, asi:
( al fin y al cabo solo necesito ver lo que saca por consola cuando hay errores :P

Código: Text
  1.         if (e.getActionCommand() == ("MAKE")) {
  2.    int d = JOptionPane.showConfirmDialog(null, "Base:  +" + getBase() + System.getProperty("line.separator") + "Asm File:  " + Asm.getAbsolutePath() + System.getProperty("line.separator") + "Raw File:  " + Raw.getAbsolutePath() + System.getProperty("line.separator") + System.getProperty("line.separator") + "Continue?", "Confirmation", JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.INFORMATION_MESSAGE);
  3.             if (d == 0) {
  4.                 try {
  5.                     p = Runtime.getRuntime().exec("make" + " " + "C:/Documents and Settings/Administrador/Mis documentos/NetBeansProjects/Armpc/1.asm" + " " + "C:/Documents and Settings/Administrador/Mis documentos/NetBeansProjects/Armpc/W.raw" + " " + getBase());
  6.  
  7.                     }
  8.                 } catch (IOException ex) {
  9.                     JOptionPane.showMessageDialog(null, ex.toString());
  10.                 }
  11.             }
  12.         }
  13.  
veo:
java.io.IOException: Cannot run program "make": CreateProcess error=2, El sistema no puede hallar el archivo especificado
segun entiendo cmd lo esta entendiendo como si yo le dijera "notepad" (supongo esta buscando un make.exe) y make es un .bat que llama al resto....(segun entiendo)
y sigo estancado........

esa es la manera correcta de entrar parametros ?, porque cuando mando abrir el explorer con X URL lo hago asi:
p = Runtime.getRuntime().exec("ruta explorer URL");

Gracias por la ayuda, pero ia no se que hacer :bad: estoy pensando que el .exe no se maneja asi........

Saludos!

shadow_rev

  • Miembro MUY activo
  • ***
  • Mensajes: 397
  • Nacionalidad: co
  • Un SPARTAN no muere en combate
    • Ver Perfil
    • http://shadowrev.blogspot.com
Re: ejecutar .exe con parametros y excepciones...
« Respuesta #5 en: Jueves 15 de Enero de 2009, 17:11 »
0
Intenta poniendo la ruta completa del make (igual a como llamas al explorer), o sea, C:/la-carpeta-donde-esta-el-make/make.bat en vez de make:

Código: Java
  1. p = Runtime.getRuntime().exec("C:/la-carpeta-donde-esta-el-make/make.bat" + " " + "C:/Documents and Settings/Administrador/Mis documentos/NetBeansProjects/Armpc/1.asm" + " " + "C:/Documents and Settings/Administrador/Mis documentos/NetBeansProjects/Armpc/W.raw" + " " + getBase());
  2.  

:suerte:
Volará quien le ponga alas a sus sueños (Candidate for goddess)
Si el mal existe en este mundo, reside en el corazón de la humanidad (Edward D. Morrison - Tales of Phantasia)
Lo único que puedes cambiar del pasado, es lo que sientes por él en el presente (Lockon Stratos - Mobile Suit Gundam 00)
Ingeniero de Sistemas

Edgpaez

  • Nuevo Miembro
  • *
  • Mensajes: 5
    • Ver Perfil
Re: ejecutar .exe con parametros y excepciones...
« Respuesta #6 en: Jueves 15 de Enero de 2009, 17:40 »
0
:beer:  :beer:  :beer:  :beer:

YES !!!
por fin funciona  :good:
p = Runtime.getRuntime().exec("make.bat" + " " + "1.asm" + " " + "W.raw" + " " +  getBase());
El problema esta en las rutas...
Pero la gracia de mi programa es que yo elija un archivo y el automaticamente ponga la ruta en el programa....
pero entonces
C:/......./ No funciona....
Entonces, cuales pongo ??  :blink:

Muchas gracias amigo  :beer: siempre hace falta otra cabeza que no este enredada como la del que programa  :P

Saludos!

EDIT
Ya vi !!
es con C: back slash  ^_^
La cosa es que al poner el comando asi, no me deja ¬¬

m0skit0

  • Miembro de PLATA
  • *****
  • Mensajes: 2337
  • Nacionalidad: ma
    • Ver Perfil
    • http://fr33kk0mpu73r.blogspot.com/
Re: ejecutar .exe con parametros y excepciones...
« Respuesta #7 en: Sábado 17 de Enero de 2009, 16:29 »
0
Pon la ruta "entre comillas"

Salud

Edgpaez

  • Nuevo Miembro
  • *
  • Mensajes: 5
    • Ver Perfil
Re: ejecutar .exe con parametros y excepciones...
« Respuesta #8 en: Sábado 17 de Enero de 2009, 18:06 »
0
:beer:
Un poco tarde pero gracias  :)  ya lo habia descubierto jojo, pero muchas gracias......

Ahora, alguien tiene un ejemplo de programa que tenga Drag adn Drop ¿?¿?¿?  ;)
he leido mucho al respecto y la verdad poco entiendo, solo quiero arrastrar ciertos archivos ( dependiendo de extension ) a mi panel y que este recoja sus rutas.....

Gracias y Saludos!

PD: Ya lei el tutorial en sun, y dice tanto que no dice nada  <_<  solo necesito un pequeño codigo ejemplo ;)