2010-03-16 20 views
6

Czy można uruchomić inną aplikację zainstalowaną w systemie przy pomocy mojej aplikacji java i przekazać plik jako parametr do nich? Mam klienta, który odbiera wideo z serwera i chcę, aby mój program klienta się uruchomił, powiedzmy odtwarzaczowi VLC z plikiem, który otrzymałem. Jak mam to zrobić?Uruchamianie innych aplikacji za pomocą Javy

+3

Zaakceptuj coś pierwszy! (dostaniesz odznakę i więcej odpowiedzi). – Roman

+1

Możesz znaleźć historię swoich pytań na stronie profilu (stronie, którą zobaczysz po kliknięciu w dowolnym miejscu, gdzie twoje imię pojawia się jako link): http: // stackoverflow.com/users/283494 Głosuj na pytania, które uznałeś za przydatne, klikając strzałkę w górę i zaakceptuj odpowiedzi, które faktycznie pomogły w rozwiązaniu problemu, klikając znacznik wyboru. Utrzymaj ducha StackOverflow przy życiu :) – BalusC

+0

oh, przepraszam. Jestem nowy w stackoverflow i nie wiedziałem, że muszę to zrobić. – user283494

Odpowiedz

13

Wpisz Desktop#open(). Uruchomi ona domyślną aplikację powiązaną z platformą, aby otworzyć dany plik.

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

Nie trzeba kłopotów z Runtime#exec() lub ProcessBuilder za które trzeba by dodać wykrywanie platformy i napisać logiki specyficzne dla platformy.

+0

+1 Nie widziałem tego wcześniej. Ciekawy. – Brabster

2

Z łatwością można uruchomić program zewnętrzny na Javę 5+ z ProcessBuilder, w tym przekazywanie argumentów i obsługę strumieni wejścia/wyjścia.

np.

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

Tylko używał go sam wykonujący non-UI rzeczy, dam mu szybko iść i zobaczyć, co się dzieje z czymś VLC.


Aktualizacja:

Aktualizacja - działa przysmak dla flv na Ubuntu, interfejs jest widoczny i akceptuje argumenty pliku.

+0

Słodko, nie wiedziałem o tym! :-) –

3

Po prostu:

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

Upewnij się złapać wszystkie istotne wyjątki

+0

Pod warunkiem, że VLC znajduje się w PATH. Tak nie jest w moim systemie ... – Joey

+0

Następnie podaj ** pełną ** ścieżkę do pliku + rozszerzenie VLC. –

2

Możesz wywołać metodę exec na obiekcie Runtime.

Runtime.getRuntime().exec("System specific command line text here"); 
Powiązane problemy