# exe Datei starten.



## Phille (21. Dez 2007)

Ich möchte gerne eine exe Datei aus meinem Java Programm starten...

Hier der bisherige Code:


```
import java.io.*;
import java.util.Scanner;

public class ExecDir
{
  public static void main( String[] args ) throws IOException
  {
    ProcessBuilder builder = new ProcessBuilder( "cmd", "/c", "dir" );
    builder.directory( new File("c:/") );
    Process p = builder.start();

    Scanner s = new Scanner( p.getInputStream() ).useDelimiter( "\\Z" );
    System.out.println( s.next() );
  }
}
```

Wie muss ich das verändern, dass er automatisch test.exe im Verzeichnis c:/test/ öffnet?

Gruß


----------



## dieta (21. Dez 2007)

Du musst das Kommando auf "test.exe" und den Pfad auf "c:/test/" setzen:

```
ProcessBuilder builder = new ProcessBuilder( "test.exe" );
builder.directory( new File("c:/test/") );
```


----------



## Phille (22. Dez 2007)

Da steht dann, dass er die Datei ncht finden kann...
Edit: Ich hab natürlich wirklich ne test.exe in dem Ordner c:/test/


----------



## Murray (22. Dez 2007)

ProcessBuilder#directory( String) setzt das Working-Directory; das hat nichts damit zu tun, wo die Anwendung gefunden wird.

Versuch es mal so:

```
ProcessBuilder builder = new ProcessBuilder( "c:\\test\\test.exe" );
builder.directory( new File("c:\\test") );
```


----------



## Phille (22. Dez 2007)

Das funktioniert nicht.
Gibt es nicht eine möglichkeit, eine exe Datei im gleichen Verzeichniss zu starten?

Ich möchte nämlich einen restarter programmieren, der 2 exe Dateien startet und dann, wenn sie abstüzen neustartet.

Ich hoffe jemand hat eine Idee.


----------



## dieta (23. Dez 2007)

Runtime.exec müsste das können.
[edit]Jaja... runtime... Tippfehler...[/edit]


----------



## Phille (23. Dez 2007)

Danke schonmal dafür!

Ich habs jetzt aber so gemacht:


```
import java.io.*;

public class test {

  public static void main(String[] args) throws IOException {

    Runtime.getRuntime().exec("test.exe");
    Runtime.getRuntime().exec("test2.exe");

  }

}
```

Ich möchte nun aber die Datei nicht einfach starten, sondern den Befehl "start test.exe" haben (was mit System.exec ja geht).

Aber wenn ich System.exec("start test.exe"); eingebe kommt ein Fehler:

test.java:23:11: cannot find symbol
symbol  : method exec(java.lang.String)
location: class java.lang.System
    System.exec("start test.exe");

1 error


Was soll ich machen?


----------



## Murray (23. Dez 2007)

System#exec gibt es nicht; nimm Runtime#exec


----------



## Ralle (4. Jan 2008)

Ja,
das läuft ja auch top. Aber wie kann ich auch Parameter mit übergeben 

Runtime.getRuntime().exec("cmd.exe");  // und dann z.B. Telnet 192.168.1.8


wie müsste das dann da rein ?


----------



## anfänger15 (4. Jan 2008)

glaube

Runtime.getRuntime().exec("cmd.exe /c telnet 192.168.1.8 ");


----------



## The_S (4. Jan 2008)

Runtime.getRuntime().exec("cmd /c telnet 192.168.1.8 ");


----------



## Guest (4. Jan 2008)

Nö will er nicht.


Er zeigt keinen Fehler macht aber auch kein Telnet oder die Eingabeaufforderung auf


----------



## The_S (4. Jan 2008)

so wird ja auch nicht die Eingabeaufforderung gestartet, sondern es wird lediglich der befehl im hintergrund ausgeführt.


----------



## Guest (4. Jan 2008)

Ok aber dann müsste doch der Telnet offen sein ? 

Das ist er ja leider nicht. 

Alle anderen Programme bekomme ich gestet nur cmd nicht. Egal was ich mal Telnet oder was auch immer


----------



## The_S (4. Jan 2008)

nö, warum sollte es?

Wenn du möchtest, dass etwas in einer seperaten cmd ausgeführt wird, musst du noch den parameter "start" übergeben.

Runtime.getRuntime().exec("cmd /c start telnet 127.0.0.1");


----------



## Guest (4. Jan 2008)

Jo danke das war es.


----------



## Ingo123 (8. Jan 2008)

Also ich habe das jetzt auch mal versucht 
Server Debian 4.0 mini 



Runtime.getRuntime().exec("/home/ingo/codtest/cod_lnxded");


Ich titte in die Console ein ./test.jar
Als Antwort erhalte ich das 
-bash: ./test.jar: cannot execute binary file

Er kann angeblich das File nicht ausführen. Aber wenn ich das sleber in der Console eingebe startet der Serer
./cod_lnxded

hat einer eine Idee ? 

Danke


----------



## Ingo123 (8. Jan 2008)

Nachtrag:

Ich meine tippe (sorry) 
und die test.jar hat 777 als rechte also kann es daran nicht liegen. Java ist auch auf dem Server installiert. Aber ein xserver. 
Warum auch.


----------



## Der Müde Joe (8. Jan 2008)

jar ist kein shell script.
So startet man eine Jar:

java -jar MyJar.jar


----------



## Ingo123 (8. Jan 2008)

Jo ok jetzt macht er es. 

Da ich aber keine GTK druf habe mault er rum 

Gtk-WARNING **: cannot open display:


Mich wundert es ja , dass ich den Server mit ./cod_lnxded auch aus der console starten kann.Es geht auch in der console screen -dmS  cod ./cod_lnxded  

Wie muss ich es machen, das wenn ich die jar starte, und die dann meinen Server. Eine GTK möchte auf keinen Fall installieren. 

Danke für alles


----------

