Java - wykonywanie poleceń terminala
-
- Piegowaty Guziec
- Posty: 22
- Rejestracja: 26 kwie 2009, 22:48
- Płeć: Mężczyzna
- Wersja Ubuntu: 9.10
- Środowisko graficzne: GNOME
- Architektura: x86
- Kontakt:
Java - wykonywanie poleceń terminala
Witam,
Zaczynam się uczyć programowania w javie i ostatnio stworzyłem sobie bardzo prostą aplikacje z gui. Teraz chciałbym aby program javy po przyciśnięciu przycisku wykonywał jakieś polecenie terminala np. apt-get update. Jest to możliwe? Przeszukałem google i nic nie znalazłem co mnie mogło zainteresować.
W C++ służyła do tego funkcja system("") np. system("apt-get update"). Czy istnieje w javie coś podobnego?
Zaczynam się uczyć programowania w javie i ostatnio stworzyłem sobie bardzo prostą aplikacje z gui. Teraz chciałbym aby program javy po przyciśnięciu przycisku wykonywał jakieś polecenie terminala np. apt-get update. Jest to możliwe? Przeszukałem google i nic nie znalazłem co mnie mogło zainteresować.
W C++ służyła do tego funkcja system("") np. system("apt-get update"). Czy istnieje w javie coś podobnego?
- Kastagir
- Sędziwy Jeż
- Posty: 89
- Rejestracja: 09 sty 2006, 16:36
- Płeć: Mężczyzna
- Wersja Ubuntu: 17.04
- Środowisko graficzne: Inne
- Architektura: x86_64
Odp: Java - wykonywanie poleceń terminala
Poczytaj o klasach Runtime (metoda exec) i Process.
Przykład
Przykład
Kod: Zaznacz cały
import java.io.*;
public class ProcTest
{
public static void main(String args[]) throws IOException
{
Runtime rt = Runtime.getRuntime();
Process proc = rt.exec(args);
BufferedReader br = new BufferedReader(new InputStreamReader(proc.getInputStream()));
while(br.ready())
{
System.out.println(br.readLine());
}
}
}
"Search you should use, my young padawan"
-
- Piegowaty Guziec
- Posty: 22
- Rejestracja: 26 kwie 2009, 22:48
- Płeć: Mężczyzna
- Wersja Ubuntu: 9.10
- Środowisko graficzne: GNOME
- Architektura: x86
- Kontakt:
Odp: Java - wykonywanie poleceń terminala
O dzięki . A mógłbyś napisać jeszcze taki praktyczny przykład np. na funkcji echo ?? Ja próbuję cały czas ale nie działa, tzn kompilacja przebiega dobrze ale przy uruchomieniu dostaję komunikat:
Kod: Zaznacz cały
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
at ProcTest.main(ProcTest.java:16)
Kod: Zaznacz cały
import java.io.*;
public class ProcTest {
public static void main(String args[]) throws IOException
{
Runtime rt = Runtime.getRuntime();
args[0] = "echo \"test\"";
Process proc = rt.exec(args[0]);
BufferedReader br = new BufferedReader(new InputStreamReader(proc.getInputStream()));
while(br.ready())
{
System.out.println(br.readLine());
}
}
}
- Kastagir
- Sędziwy Jeż
- Posty: 89
- Rejestracja: 09 sty 2006, 16:36
- Płeć: Mężczyzna
- Wersja Ubuntu: 17.04
- Środowisko graficzne: Inne
- Architektura: x86_64
Odp: Java - wykonywanie poleceń terminala
w konsoli
np.
Kod: Zaznacz cały
java ProcTest polecenie
Kod: Zaznacz cały
java ProcTest ls
"Search you should use, my young padawan"
-
- Piegowaty Guziec
- Posty: 22
- Rejestracja: 26 kwie 2009, 22:48
- Płeć: Mężczyzna
- Wersja Ubuntu: 9.10
- Środowisko graficzne: GNOME
- Architektura: x86
- Kontakt:
Odp: Java - wykonywanie poleceń terminala
Witam ponownie
pozmieniałem sobie program i wyszło takie coś:
Czyli uruchamia kolejno programy: kadu, firefox, gedit, oraz nautilus. I teraz mam pytanie, czy da się wykonać jakąś komendę, którą się używa normalnie w terminalu? Myślałem zrobić tak, że otwieramy przez program javy tak jak wyżej, terminal czyli gnome-terminal i wkleić do wykonania dowolną komendę. Ale pojawiają się schody właśnie przy wklejeniu tej komendy, a czy w ogóle jest to wykonalne?
Da się uruchomić terminal z parametrem tak aby już sam wykonywał dane działanie, chodzi mi o analogie do tego firefox http://www.ubuntu.pl - otwiera się firefox ze stroną http://www.ubuntu.pl ?
pozmieniałem sobie program i wyszło takie coś:
Kod: Zaznacz cały
import java.io.*;
public class ProcTest {
public static void main(String [] agrs) throws IOException
{
String[] A = new String[10];
A[0] = "kadu";
A[1] = "firefox http://www.ubuntu.pl";
A[2] = "gedit";
A[3] = "nautilus /etc/";
int a = 0;
while(a <= 3){
Runtime rt = Runtime.getRuntime();
Process proc = rt.exec(A[a]);
a++;
}
}
}
Da się uruchomić terminal z parametrem tak aby już sam wykonywał dane działanie, chodzi mi o analogie do tego firefox http://www.ubuntu.pl - otwiera się firefox ze stroną http://www.ubuntu.pl ?
- beluosus
- Zakręcona Traszka
- Posty: 695
- Rejestracja: 01 paź 2006, 15:32
- Płeć: Mężczyzna
- Wersja Ubuntu: inny OS
- Środowisko graficzne: Xfce
- Architektura: x86
- Kontakt:
Odp: Java - wykonywanie poleceń terminala
Tak, do tego służy przeważnie parametr -e.Scofield1 pisze:Da się uruchomić terminal z parametrem tak aby już sam wykonywał dane działanie, chodzi mi o analogie do tego firefox http://www.ubuntu.pl - otwiera się firefox ze stroną http://www.ubuntu.pl ?
Kod: Zaznacz cały
terminal -e htop
-
- Piegowaty Guziec
- Posty: 22
- Rejestracja: 26 kwie 2009, 22:48
- Płeć: Mężczyzna
- Wersja Ubuntu: 9.10
- Środowisko graficzne: GNOME
- Architektura: x86
- Kontakt:
Odp: Java - wykonywanie poleceń terminala
U mnie nie działa . Terminal zaraz się zamyka. Jakieś inne propozycje komuś się nasuwają?beluosus pisze:Tak, do tego służy przeważnie parametr -e.Kod: Zaznacz cały
terminal -e htop
- beluosus
- Zakręcona Traszka
- Posty: 695
- Rejestracja: 01 paź 2006, 15:32
- Płeć: Mężczyzna
- Wersja Ubuntu: inny OS
- Środowisko graficzne: Xfce
- Architektura: x86
- Kontakt:
Odp: Java - wykonywanie poleceń terminala
Zależy od terminala, np:
Na xtermie zadziała, a na gnomowym nie.
Kod: Zaznacz cały
xterm -e "echo test; sleep 1"
gnome-terminal -e "echo test; sleep 1"
-
- Piegowaty Guziec
- Posty: 22
- Rejestracja: 26 kwie 2009, 22:48
- Płeć: Mężczyzna
- Wersja Ubuntu: 9.10
- Środowisko graficzne: GNOME
- Architektura: x86
- Kontakt:
Odp: Java - wykonywanie poleceń terminala
Dzięki, przydało się Prosiłbym o nie zamykanie tematu bo pewnie w przyszłości tutaj coś napiszę
Kto jest online
Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 4 gości