Foros del Web » Programación para mayores de 30 ;) » Java »

Ejecutar programa externo desde un botón JAVA

Estas en el tema de Ejecutar programa externo desde un botón JAVA en el foro de Java en Foros del Web. Código: import java.awt.*; import java.applet.Applet; class BotonAccion extends Button { public BotonAccion() { setLabel( "TEXTO DEL BOTON" ); } public boolean action( Event evt,Object obj ...
  #1 (permalink)  
Antiguo 24/06/2010, 05:40
 
Fecha de Ingreso: agosto-2009
Mensajes: 12
Antigüedad: 15 años, 3 meses
Puntos: 0
Ejecutar programa externo desde un botón JAVA

Código:
import java.awt.*;
import java.applet.Applet;


class BotonAccion extends Button {

    public BotonAccion() {
        setLabel( "TEXTO DEL BOTON" );
    }

    public boolean action( Event evt,Object obj ) {
     try {	    
       Process p = Runtime.getRuntime().exec ("RUTA DEL FICHERO .EXE");
     }
     catch(Exception e){ 
       System.out.println("EXCEPCIÓN LANZADA");
     }
     return true;    
    }
}

public class BotonAuto extends Applet {
    BotonAceptar boton;

    public void init() {
        boton = new BotonAccion();
        add( boton );
        }
}
Hola a todos. Estoy intentando ejecutar un .exe desde código JAVA. La idea es crear un botón en pantalla y que al presionar ese botón, se ejecute una instancia de otro programa dentro del mismo equipo, accediendo a un fichero .exe mediante su ruta.

El código que he insertado antes de este mensaje compila corréctamente, pero a la hora de ejecutarlo no obtengo resultados y da algunos errores. ¿Alguien sabe cual puede ser el problema u otra forma de hacer esto mismo?

Muchas gracias por adelantado por la ayuda y un saludo

Última edición por fernanarr; 24/06/2010 a las 19:49
  #2 (permalink)  
Antiguo 24/06/2010, 10:55
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 20 años, 1 mes
Puntos: 454
Respuesta: Ejecutar programa externo desde un botón JAVA

Ayudaría que dijeras exactamente cuales son esos errores.

El método action del Button está obsoleto según la API. ¿Se llama a ese trozo de código?

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #3 (permalink)  
Antiguo 25/06/2010, 06:37
 
Fecha de Ingreso: agosto-2009
Mensajes: 12
Antigüedad: 15 años, 3 meses
Puntos: 0
Respuesta: Ejecutar programa externo desde un botón JAVA

En teoría el método action se ejecuta al pulsar el botón que se ha creado en este mismo código.

este es el fallo que da al ejecutar

Exception in thread "main" java.lang.NoSuchMethodError: main

Yo he interpretado que pedía crear un método main y lo he incluido, pero ni con esas. Estoy un poco pez con esto de los botones gráficos de Java
  #4 (permalink)  
Antiguo 25/06/2010, 09:33
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 20 años, 1 mes
Puntos: 454
Respuesta: Ejecutar programa externo desde un botón JAVA

Da la impresión de que el poblema no es arrancar un ejecutable externo desde una aplicación, sino que ni siquiera arranca la aplicación ¿verdad?

Sí, cualquier ejecutable java tiene que tener un método main(). El método tiene que ser exactamente así

public static void main (String [] args) {
....
}

y debe estar en la clase que estás intentando arrancar.

De todas formas, parece que estás haciendo un Applet y un Applet se arranca desde el navegador o con el AppletViewer que viene desde java. Haciéndolo así nunca debería protestarte porque no hay main. Así que me hace la impresión que estás haciendo un Applet, pero estás intentando arrancarlo como una aplicación de escritorio normal.

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #5 (permalink)  
Antiguo 27/06/2010, 17:25
 
Fecha de Ingreso: agosto-2009
Mensajes: 12
Antigüedad: 15 años, 3 meses
Puntos: 0
Respuesta: Ejecutar programa externo desde un botón JAVA

Gracias antes que nada por las respuestas.

El método main me lo he comido con patatas por haberlo escrito mal en las posibles soluciones que intenté para los errores, no obstante no se si con eso lo conseguiré porque he leido un poco de aquí y otro poco de allí para buscar una solución para lo que intentaba hacer.

Mi idea es que el código java lance una ventana que contenga un botón, y que ese botón abra una segunda aplicación. Un ejemplo práctico portía ser que cada vez que se pulse ese botón se abriera una ejecución de word así por hacerlo un poco más gráfico. Esta solución es la única que encontré que me pareciera viable, peor no se yo si por aquí voy bien.
  #6 (permalink)  
Antiguo 27/06/2010, 22:08
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 20 años, 1 mes
Puntos: 454
Respuesta: Ejecutar programa externo desde un botón JAVA

Bueno, como te comento, lo primero que tienes que decir es si estás haciendo un Applet o una aplicación de escritorio. Y una vez decidido, cómo lo estás arrancando.

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #7 (permalink)  
Antiguo 28/06/2010, 05:41
 
Fecha de Ingreso: agosto-2009
Mensajes: 12
Antigüedad: 15 años, 3 meses
Puntos: 0
Respuesta: Ejecutar programa externo desde un botón JAVA

Hola de nuevo

Es aplicación de escritorio, la idea es que se ejecute en cada máquina de manera independiente. El arranque sería con un fichero bat que llame al .class que se cree al compilar. Luego he encontrado un programita que convertirá en un .exe el .bat para hacerlo más familiar para cualquiera acostumbrado a utilizar windows.
  #8 (permalink)  
Antiguo 28/06/2010, 08:50
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 20 años, 1 mes
Puntos: 454
Respuesta: Ejecutar programa externo desde un botón JAVA

Pues quita el extends Applet, hereda de JFrame, ponle un main() y en el main() haz un new de tu clase, además de dar tamaño al JFrame y visualizarlo.

Aquí tienes un ejemplo sencillo con una ventana que tiene un botón y una caja de texto http://www.chuidiang.com/java/novato...undo_swing.php

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #9 (permalink)  
Antiguo 28/06/2010, 09:55
 
Fecha de Ingreso: agosto-2009
Mensajes: 12
Antigüedad: 15 años, 3 meses
Puntos: 0
Respuesta: Ejecutar programa externo desde un botón JAVA

Un millón de gracias. Voy a probarlo y te cuento

Edito mi mensaje, que tengo problemas y seguro que son de novato muy muy novato. Al ejecutar tanto el código de ejemplo como el que tengo modificado para que en lugar de escribir abra la aplicación al pulsar, me da estos mismos fallos para no ejecutarse. He cambiado el package por ejecucion y he creado esa carpeta en mi directorio. El fichero .class se crea pero a la hora de ejecutar da estos fallos. ¿Será algun problema con la simportaciones por algo que me falte en el ordenador?

java HolaMundoSwing

Exception in thread "main" java.lang.NoClassDefFoundError: HolaMundoSwing (wrong
name: ejecucion/HolaMundoSwing)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(Unknown Source)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknow n Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$000(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
Could not find the main class: HolaMundoSwing. Program will exit.

Muchas gracias de verdad por prestarme tanta atención

Última edición por fernanarr; 28/06/2010 a las 10:15
  #10 (permalink)  
Antiguo 28/06/2010, 11:55
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 20 años, 1 mes
Puntos: 454
Respuesta: Ejecutar programa externo desde un botón JAVA

bueno, ahora tienes problemas con los package.

Si tu clase tiene package ejecucion, el fichero .class debe estar dentro de un directorio que se llame ejecucion y se ejecuta con java ejecucion.HolaMundoSwing habiéndose situado en el directorio padre del subdirectorio ejecucion. Por ejemplo, si tienes lo siguiente

c:\proyecto\ejecucion\HolaMundoSwing.class

se ejecuta así

cd c:\proyecto
java ejecucion.HolaMundoSwing

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #11 (permalink)  
Antiguo 28/06/2010, 15:16
 
Fecha de Ingreso: agosto-2009
Mensajes: 12
Antigüedad: 15 años, 3 meses
Puntos: 0
Respuesta: Ejecutar programa externo desde un botón JAVA

Muchísimas gracias de nuevo. Tengo aparcado el java hace mucho y ya sabía yo que era un error básico de principiante, el estar mucho tiempo con C ha colapsado mi mente

Funciona perféctamente, tanto la ventana con el botón como la ejecución del programa. Solo me está fallando una cosilla. Quiero que se ejecute a través de un .bat, pero en teoría, el contendido de ese fichero debería ser
"java .\ejecucion.HolaMundoSwing" para que lo haga desde el directorio en que esté y acceda a la carpeta del paquete, pero cuando lo ejecuto usando ese .bat no hace nada ¿hay algo mal o es cosa del windows? Y otra cosita, si quisiera asignar un tamaño fijo a la ventana ¿cómo lo haría? Oye en serio, muchísimas gracias, me has echado un cable enorme.
  #12 (permalink)  
Antiguo 28/06/2010, 21:54
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 20 años, 1 mes
Puntos: 454
Respuesta: Ejecutar programa externo desde un botón JAVA

Hola:

Qué quiere decir "no hace nada". Algo hará, aunque sea dar un error.

Lo del tamaño, usa setSize() para dar el tamaño y si no quieres que el usuario pueda redimensionarlo, usa setResizable(false).

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #13 (permalink)  
Antiguo 29/06/2010, 04:40
 
Fecha de Ingreso: agosto-2009
Mensajes: 12
Antigüedad: 15 años, 3 meses
Puntos: 0
Respuesta: Ejecutar programa externo desde un botón JAVA

Hola

Me estaba dando problemas con los paquetes, al final lo que he hecho ha sido dejarlo todo en el directorio principal y ahora funciona. El problema era que lanzaba la ventana de comando medio segundo, así que he tenido que capturar la pantalla para ver los fallos. Dice que no encuentra la clase main del HolaMundoSwing, pero al eliminar los paquetes y dejar el .bat junto al .class ha arrancado. No se por qué fallaría de la otra forma El fallo que mejor lo describe imagino es el "java.lang.ClassNotFoundException: .\ejecucion.HolaMundoSwing"

Pero bueno, de la otra forma funciona bien y la asignación de tamaño de la ventana quedó perfecta. Muchísimas gracias por todo.
  #14 (permalink)  
Antiguo 01/07/2010, 10:49
 
Fecha de Ingreso: agosto-2009
Mensajes: 12
Antigüedad: 15 años, 3 meses
Puntos: 0
Respuesta: Ejecutar programa externo desde un botón JAVA

Te he dejado un mensajillo privado sobre otro tema de JAVA menos específico
  #15 (permalink)  
Antiguo 01/07/2010, 13:33
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 20 años, 1 mes
Puntos: 454
Respuesta: Ejecutar programa externo desde un botón JAVA

¿Por qué un privado cuando un foro sirve para preguntar las cosas en público?. Lo siento, no contesto privados.

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #16 (permalink)  
Antiguo 01/07/2010, 18:47
 
Fecha de Ingreso: agosto-2009
Mensajes: 12
Antigüedad: 15 años, 3 meses
Puntos: 0
Respuesta: Ejecutar programa externo desde un botón JAVA

Ah vale perdona, lo he hecho porque era un tema un poco ambiguo y puede que elguien se me despistara un poco.

La pregunta iba porque he estado enredando en C++ en un programa de edición de vídeo de código abierto y se nos ocurrió la posibilidad de añadirle la opción de captar imágenes de una cámara IP. El problema es que ese programa busca entre los drivers del sistema el de las cámaras conectadas al equipo y por eso no acaba de enganchar bien las imágenes de las cámaras remotas. La duda era saber si existiría algun método en JAVA que permitiera una conexión a esas cámaras y permitiera al sistema simular que ésta estaba conectada diréctamente al equipo...vamos algo así como un driver virtual de la cámara IP remota.

Un saludo

Etiquetas: ejecutar, externo, programa
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:43.