Uruchamianie innych aplikacji za pomocą exec

Uruchamianie innych aplikacji za pomocą exec
SP
  • Rejestracja:ponad 12 lat
  • Ostatnio:prawie 12 lat
  • Postów:5
0

Witam, mam pytanie dotyczące uruchamiania aplikacji za pomocą runtime i exec.
Chodzi o to, że niektóre aplikacje (np. notatnik oraz word) normalnie się otwierają, wybrane pliki też, ale niektóre już nie, na przykład zwykły CMD lub inne aplikacje w javie. Najbardziej mi zależy na tym, aby za pomocą jednej aplikacji w javie móc otworzyć drugą. Kod:

Kopiuj
public class ExecDemo {

	public static void main(String Args[]) throws Exception {

		Runtime r = Runtime.getRuntime();
		String[] cmds = { "C:\\Program Files\\Java\\jre7\\bin\\javaw.exe",
				"C:\\aplikacja.jar" };
		try {
			r.exec(cmds);
		} catch (Exception e) {
			System.out.println(e.toString());
		}

	}

}

Za pomocą tego samego kodu (tylko zmieniając ścieżki) moge otwierać pliki worda i notatnika, ale javy już nie. Coś tam próbuje otworzyć, bo firewall się mnie pyta czy zezwalam itd., ale ostatecznie nic się nie robi, żaden błąd nie wyskakuje itd. Gdy aplikacja.jar próbuję otworzyć dwuklikiem, to się poprawie otwiera (mała pierdółka okienkowa nic wielkiego nie robiąca). Wie ktoś w czym jest problem? Szukałem już dość długo czegoś na ten temat i nic nie znalazłem.

edytowany 2x, ostatnio: bogdans
bogdans
Moderator
  • Rejestracja:prawie 17 lat
  • Ostatnio:prawie 5 lat
1

Uruchamiałeś kiedyś jara z ręki? javaw -jar nazwaJara

Kopiuj
String[] cmds = { "C:\\Program Files\\Java\\jre7\\bin\\javaw.exe","-jar", "C:\\aplikacja.jar" };

To smutne, że głupcy są tak pewni siebie, a ludzie mądrzy - tak pełni wątpliwości. Bertrand Russell
edytowany 2x, ostatnio: bogdans
SP
  • Rejestracja:ponad 12 lat
  • Ostatnio:prawie 12 lat
  • Postów:5
0

działa, dziękuję Ci bardzo za pomoc :)
czytałem , że jest jeszcze w tej metodzie jakiś string2, tylko nie miałem pojęcia o co z tym chodzi.
jeszcze raz dziękuję ;)

przy innych aplikacjach też muszę znaleźć takie odpowiednie polecenia, żeby je odpalić? mam teraz na myśli chociażby CMD lub pliki .bat

może pytania są dość podstawowe, no ale jestem samoukiem z programowania i też dopiero jakiś czas temu zacząłem się tego uczyć.

Kerai
  • Rejestracja:ponad 16 lat
  • Ostatnio:ponad 2 lata
  • Lokalizacja:London
0

Musisz wprowadzić poprawne polecenia - takie same jak gdybyś te programy odpalał z linii komend. To chyba logiczne, nie?
Większość programów otwierających pliki reaguje na coś takiego
program plik
launcher javy ma tę składnię zarezerwowaną dla
java NazwaKlasy
zakładając, że w classpath (domyślnie katalog bieżący, ale można ustawić nawet na jar( lub kilka(naście))) znajduje sie plik NazwaKlasy.class.
Z tego powodu do otwierania jarów jest dodatkowy parametr -jar

edytowany 2x, ostatnio: bogdans
bogdans
Moderator
  • Rejestracja:prawie 17 lat
  • Ostatnio:prawie 5 lat
1

Jeśli chcesz otworzyć plik domyślnym programem, to możesz użyć innych poleceń. Np. zamiast kodu

Kopiuj
Runtime r = Runtime.getRuntime();
String[] cmds = { "C:\\Program Files\\Java\\jre7\\bin\\javaw.exe","-jar","C:\\aplikacja.jar" };
try {
     r.exec(cmds);

który, żąda: otwórz plik aplikacja.jar programem javaw, możesz użyć kodu

Kopiuj
try {
     Desktop.getDesktop().browse(new File("C:\\aplikacja.jar").toURI());

który żądą: otwórz plik aplikacja.jar programem domyslnym.


To smutne, że głupcy są tak pewni siebie, a ludzie mądrzy - tak pełni wątpliwości. Bertrand Russell

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.