Uruchamianie innych aplikacji za pomocą exec

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:

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.

1

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

String[] cmds = { "C:\\Program Files\\Java\\jre7\\bin\\javaw.exe","-jar", "C:\\aplikacja.jar" };
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ć.

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

1

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

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

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

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

1 użytkowników online, w tym zalogowanych: 0, gości: 1