2010-03-16 19 views
6

¿Es posible iniciar otras aplicaciones que estén instaladas en el sistema con mi aplicación java y pasarles un archivo como parámetro? Tengo un cliente que recibe videos de un servidor y quiero que se inicie mi programa cliente, digamos el reproductor VLC con el archivo que recibí. ¿Cómo logro hacer eso?Iniciar otras aplicaciones con Java

+3

¡Aceptar algo primero! (obtendrá una insignia y más respuestas) – Roman

+1

Puede encontrar un historial de sus preguntas en su página de perfil (la página que verá cuando haga clic en cualquier lugar donde aparezca su nombre como enlace): http: // stackoverflow.com/users/283494 Vota las respuestas que encontraste útiles haciendo clic en la flecha hacia arriba y acepta las respuestas que realmente ayudaron a resolver el problema haciendo clic en la marca de verificación. Manten el espíritu de StackOverflow con vida :) – BalusC

+0

oh lo siento muchachos. Soy nuevo en stackoverflow y no sabía que tenía que hacer esto. – user283494

Respuesta

13

Use Desktop#open(). Lanzará la aplicación asociada predeterminada de la plataforma para abrir el archivo dado.

File file = new File("/absolute/path/to/file.vlc"); 
Desktop.getDesktop().open(file); 

No hay necesidad de complicarse con Runtime#exec() o ProcessBuilder para lo cual habría que añadir la detección de plataforma y escribir lógicas específicas de plataforma para.

+0

+1 No se ha visto antes. Interesante. – Brabster

2

Puede ejecutar un programa externo con bastante facilidad en Java 5+ con ProcessBuilder, incluidos los argumentos de paso y el manejo de flujos de entrada/salida.

por ejemplo.

ProcessBuilder movieProcess = new ProcessBuilder("/path/to/movieplayer", "/path/to.moviefile"); 
movieProcess.start(); 

Sólo utilizado yo mismo la ejecución material no-UI, voy a dar una oportunidad rápida y ver qué pasa con algo como VLC.


Actualización - trabaja un convite para FLV en Ubuntu, la interfaz de usuario es visible y acepta argumentos de archivo.

+0

¡Dulce, no sabía eso! :-) –

3

En pocas palabras:

Runtime.getRuntime().exec("vlc [arguments]"); //Write all arguments as you would in your shell. 

Asegúrese de capturar todas las excepciones pertinentes

+0

Siempre que VLC reside en la RUTA. Lo cual no es el caso en mi sistema ... – Joey

+0

Luego proporcione la ruta de archivo ** completa ** + extensión de VLC. –

2

Puede llamar al método exec en el objeto Runtime.

Runtime.getRuntime().exec("System specific command line text here"); 
Cuestiones relacionadas