Jak w javie uruchomić zewnętrzny plik *.exe

0

Jak w javie uruchomić zewnętrzny plik *.exe ?
Jak wywoływać polecenie powłoki systemu ?

0

Co trzeba zaimportować żeby móc wywołać tą metodę. Jakie trzeba jej podać parametry?

0

Klasa Runtime należy do pakietu java.lang który jest domyślnie dodawany do programu. Jako parametr domyślnie przekazuje się stringa z ścieżką do pliku lub poleceniem. Więcej informacji w dokumentacji http://java.sun.com/javase/6/docs/api/
Pozdrawiam

0

Chcę otworzyć plik *.txt przez Windowsowski Notatnik. Jak powinnam wypełnić pola metody exec(String[], String[], File)? Niestety specyfikacja API niewiele mi mówi :(

0
Process	exec(String command) 
          Executes the specified string command in a separate process.

Więc powinno być chyba tak:
Runtime.exec("Ścieżka do pliku");
Ewentualnie:
Runtime.exec("Notepad Ścieżka do pliku");

0

Niestety wyświetliło komunikat: "illegal escape charakter"

0

Bo jak podajesz ścieżkę i użyjesz \ to komputer myśli, że chcesz wprowadzić jakiś znak specjalny. Dlatego ścieżka C:\Folder\Plik.txt powinna wyglądać tak:
C:\\Folder\\Plik.txt
Powinno działać.
Pozdrawiam

0

A jak uruchomić np. przegladarkę Opera, gdy nie wiem, w jakim katalogu jest zainstalowana?

0

Teraz mam trochę inny problem: Mam klasę w której mam metodę public static void main (String args[]) i w niej mam metode Runtime.exec(). Wyświetla taki błąd: non-static method exec() cannot be referenced from a static cotext.

0

Wszystko chyba jasne. Próbujesz odwołać sie do metody exec() tak jak by była statyczna. Musisz najpierw utworzyć obiekt Runtime.

0

Metoda main jest statyczna - należy do klasy a nie do obiektu. Musisz (tak jak pisze w błędzie) wywołać metodę z niestatycznej metody. Czyli krótko mówiąc musisz wywołać konstruktor. Np. takie coś:

public class Klasa{
public static void main(String[] args){
new Klasa();
}
public Klasa(){
Runtime.exec("Ścieżka do pliku");
}
}

Pozdrawiam

0

@Afish, twoje rozwiązanie jest złe. Popatrz w dokumentację:

http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Runtime.html#exec(java.lang.String)

matoda exec() NIE jest statyczna. Wywołanie Runtime.exec() spowoduje cytowany błąd.
Przykład prawidłowego rozwiązania problemu:
http://www.javaworld.com/javaworld/jw-12-2000/jw-1229-traps.html

0

Runtime.exec(). metoda ta nie jest statyczna. w zwiazku z tym uruchom ją poprzez stworzenie obiektu konstruktora w którym umieścisz włąśnie tą metode np.

public class myclass
{
public myclass
{
Runtime.exec();
}
public static void main()
{
myclass my=new myclass();
}
} 

po uruchomieniu metody main uruchomi sie metoda Runtime.exec(). Możesz rózwnież uruchomić tą metode przez przycisk. np. Jezeli klikniesz na przycisk to odpali sie Runtime.exec().

0

Troszkę pospamuję, ale chyba inaczej się nie da

qkamil_ napisał(a)

Runtime.exec(). metoda ta nie jest statyczna. w zwiazku z tym uruchom ją poprzez stworzenie obiektu konstruktora w którym umieścisz włąśnie tą metode np.

public class myclass
{
public myclass
{
Runtime.exec();
}
public static void main()
{
myclass my=new myclass();
}
} 

po uruchomieniu metody main uruchomi sie metoda Runtime.exec(). Możesz rózwnież uruchomić tą metode przez przycisk. np. Jezeli klikniesz na przycisk to odpali sie Runtime.exec().

Przeczytaj co napisałeś. Jeżeli metoda nie jest statyczna to oznacza że nie możesz jej wywołać w sposób jaki podajesz czyli:

 
Runtime.exec("polecenie");// to się wywali

Prawidłowye wywołanie:

 
Runtime rt = Runtime.getRuntime();
rt.exec("polecenie");

Inaczej się nie da.

0

Ktoś chyba o mnie zapomniał, więc przypominam :)
A jak uruchomić np. przegladarkę Opera, gdy nie wiem, w jakim katalogu jest zainstalowana?

0

Sprawdzić w rejestrze pod windą. W Linuxie Opera powinna sama dopisywać sie do etc i wywołanie z lini poleceń: Opera cos.html powinno zawsze ruszyć

0

A jak otworzyć np. stronę http://wp.pl w domyslnej przegladarce?

0

W windowsie:

Runtime.getRuntime().exec("Start www.wp.pl");

Pod linuxem nie powiem bo nie mam go pod ręką :( nie chcę wprowadzac w błąd. Co do pytania o Operę to:

Runtime.getRuntime().exec("Start Opera");
0

W windowsie:

Runtime.getRuntime().exec("Start www.wp.pl");

Czyli w linuksie inaczej? Ach ta wieloplatforomowść Javy...

p.s
Ale i tak kocham ten język :)

0
Runtime.getRuntime().exec("Start Opera");

To działa pod linuksem? Bo pod Windowsem mi nie działą.
W takim razie jak poszukać w rejestrze?

0

W windowsie

Runtime.getRuntime().exec("Start www.wp.pl");

nie działą :(

0

Powinno działać pod Windowsem zresztą sprawdź:
start->uruchom->cmd->START Opera

Pod linuxem powinno ruszyć samo:
Opera

ps. Nie działają oznacza że nic się nie dzieje czy też że leci błąd?

0

start->uruchom->cmd->START Opera
u mnie nie działa :(

0

Opera się nie dopisała do do rejestru... hm.... a czy w linii poleceń działa:
Start www.wp.pl

0

Wracając do Notatnika:
Runtime r=Runtime.getRuntime();
r.exec("c:\windows\notepad.exe");
to działa tylko jak chcę otworzyć konkretny plik : r.exec( "C:\Documents and Settings\Pulpit\plik.txt"); wtedy pokazują sie błędy ale nie przy kompilacji tylko przy samym otwieraniu.
Jak otworzyć konkretny plik? Próbowałam zapisać r.exec("sciezka do exe", "sciezka do pliku") ale wtedy to już wyskakują błędy przy kompilacji.

0
Koziołek napisał(a)

Opera się nie dopisała do do rejestru... hm.... a czy w linii poleceń działa:
Start www.wp.pl

Działa i nawet mi moją Operkę włancza (domyślna przegladarka). To dlaczego nie działa, gdy używam tego w programie...

0

dlugo szukalem rozwiazania tego problemu, poniewaz wszystkie opisane tu metody (nie mowie ze byly bledne), ale zwracaly mi bledy, moze dlatego, ze jade jeszcze na jawie 1.4

A wiec aby uruchomic sobie wewnatrz programu domyslna przegladarke internetowa, ktora otworzy nam strone internetowa nalezy wywolac ponizsza metode:

 public void tescikRuntajma()
  {

        try
        {      
          String adresStrony="http://www.onet.pl";
            Runtime.getRuntime().exec( "cmd /C start "+adresStrony );
            
        } catch (Exception e)
           {
           	e.printStackTrace();
           }//catch

  }//tescik  

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