Programación General > Java

 ejecutar .exe con parametros y excepciones...

(1/2) > >>

Edgpaez:
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:
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:

Edgpaez:
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:
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.

Edgpaez:
: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 ---        if (e.getActionCommand() == ("MAKE")) {   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);            if (d == 0) {                try {                    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());                     }                } catch (IOException ex) {                    JOptionPane.showMessageDialog(null, ex.toString());                }            }        } 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!

Navegación

[0] Índice de Mensajes

[#] Página Siguiente

Ir a la versión completa