Is it possible to start other application that are installed on the system with my java app and pass a file as a parameter to them? I have a client which receives videos from a server and I want my client program to start, lets say the VLC player with the file that I received. How do I manage to do that?
-
3Accept something first! (you'll get a badge for it and more answers)Roman– Roman2010年03月16日 22:34:35 +00:00Commented Mar 16, 2010 at 22:34
-
1You can find a history of your questions in your profile page (the page which you will see when you click anywhere where your name appears as a link): stackoverflow.com/users/283494 Vote the answers you found useful by clicking up arrow and accept the answers which actually helped in solving the problem by clicking the checkmark. Keep the spirit of StackOverflow alive :)BalusC– BalusC2010年03月16日 22:38:37 +00:00Commented Mar 16, 2010 at 22:38
-
oh sorry guys. I'm new to stackoverflow and didn't know that I have to do this.user283494– user2834942010年03月17日 15:28:23 +00:00Commented Mar 17, 2010 at 15:28
4 Answers 4
Use Desktop#open(). It will launch the platform default associated application to open the given file.
File file = new File("/absolute/path/to/file.vlc");
Desktop.getDesktop().open(file);
No need to hassle with Runtime#exec() or ProcessBuilder for which you would have to add platform detection and to write platform specific logics for.
1 Comment
You can run an external program pretty easily on Java 5+ with ProcessBuilder, including passing arguments and handling input/output streams.
eg.
ProcessBuilder movieProcess = new ProcessBuilder("/path/to/movieplayer", "/path/to.moviefile");
movieProcess.start();
Only used it myself executing non-UI stuff, I'll give it a quick go and see what happens with something like VLC.
Update - works a treat for flv on Ubuntu, UI is visible and accepts file arguments.
1 Comment
Quite simply:
Runtime.getRuntime().exec("vlc [arguments]"); //Write all arguments as you would in your shell.
Make sure you catch all relevant exceptions
1 Comment
You can call the exec method on the Runtime object.
Runtime.getRuntime().exec("System specific command line text here");