# .jar Datei aus Java Code starten



## thedeftone (1. Okt 2008)

Hallo

Ich will aus meinem Code heraus eine externe .jar starten und kriege es einfach nicht hin. Ich bekomme immer " ist keine zulässige Win32-Anwendung". Wie kann diese aus dem Code richtig starten?
Soviel habe ich zur Zeit:

```
ProcessBuilder pb = new ProcessBuilder("PFAD\\jsrun.jar");
pb.start();
```

Grüße


----------



## FArt (1. Okt 2008)

Vielleicht: java -jar mein.jar


----------



## thedeftone (1. Okt 2008)

FArt hat gesagt.:
			
		

> Vielleicht: java -jar mein.jar


Danke, das hat mich weiter gebracht aber nun komme ich zu einem anderen Problem 
Da er mit der Angabe "java -jar" nichts anfangen konnte, kennt ja den Pfad von Java nicht, dachte ich mir, dass ich den einfach auslese und vorne anhänge aber irgendwie stimmt da noch etwas nicht.

```
String javaPath = System.getProperty("java.home");
ProcessBuilder pb = new ProcessBuilder(javaPath + "\\bin\\java -jar C:\\Users\\jsrun.jar");
```
Fehlermeldung:


> Cannot run program "C:\Program Files\Java\jdk1.6.0_02\jre\bin\java -jar C:\Users\jsrun.jar": CreateProcess error=123, Die Syntax für den Dateinamen, Verzeichnisnamen oder die Datenträgerbezeichnung ist falsch


----------



## musiKk (1. Okt 2008)

Argumente werden in separaten Argumenten übergeben.


----------



## thedeftone (1. Okt 2008)

Danke, das war der Fehler


----------



## musiKk (1. Okt 2008)

Schön, dass du was damit anfangen konntest, mir fällt jetzt erst auf, dass mein Satz doch etwas blöd aussieht.


----------



## thedeftone (1. Okt 2008)

Habs mir denken können was du meinst


----------



## Gast (10. Okt 2008)

> Argumente werden in separaten Argumenten übergeben.


habt ihr nen beispiel wie die zeile dann aussehen muss?


----------



## Grasstampfer (10. Okt 2008)

vll ein etwas komplexes bsp

```
new ProcessBuilder( "lsrun", "-R", "maxmem > 3000 && pcbcommonsoftware",
                           "/opt/share/local/java/current/bin/java",
                            "-Djava.ext.dirs=/opt/share/common/science/WebServices/WSInterProScan/lib", "-jar",
                            "/opt/share/common/science/WebServices/WSInterProScan/WSInterProScan.jar", "--email",
                            email, "--goterms", "--outfile", outFile.getAbsolutePath(), sequencefile.getAbsolutePath() );
```

erstes argument ist der Programm befehl, danach folgt komma getrennt die argumente


----------



## Gast (20. Dez 2008)

bei mir funktioniert das auch nicht...


----------



## Gast (22. Dez 2008)

Für den Fall, das man das Jar schon im Buildpath des aufrufenden Programms angeben kann wäre auch folgendes möglich

```
new Thread(new Runnable(){
public void run(){
String[] arguments = {"Argument 0","Argument 1"};
package.name.to.MainKlasseDesJars.main(arguments);
}
}).start();
```


----------

