# Anhand von Jar, andere Jar öffnen



## hashii (22. Aug 2011)

Guten Tag,

Stehe vor einem Problem. Mein Problem ist, ich habe ein Jar-Datei und möchte sobald ich diese Jar-Datei öffnen, sollte die Jar-Datei eine andere Jar öffnen (Dies brauche ich für die Versionierung der Software). 
Ich habe es so versucht


```
try {
				new ProcessBuilder("cmd", "/c", filepath).start();
			} catch (Exception exp) {
			}
```

Dies geht aber nur für andere Dateien, Jar dateien funktionieren irgendwie nicht. PS: Die zu öffnende Jar-Datei liegt auf einem Server.

Kann mir jemand bitte weiterhelfen?


----------



## Andi_CH (22. Aug 2011)

1. Frage Was heisst "jar datei öffnen"?

Du versuchst einen Prozess zu starten und wenn da kein main drin ist, geht das ntürlich nicht.

jars sind i.A. Libraries - die gibt man im mit "import "öffnet" und dann verwendet ...


----------



## hashii (22. Aug 2011)

Tut mir leid, mit Jars meine ich, die Projekte, die ich als Runnable Jar exportiert habe. Diese enthalten alle natürlich ein main.
Wenn ich direkt doppelklick auf die Jar-Datei mache, öffnet es sich problemlos. Aber wenn eine Jar-Datei dies probiert funktioniert es nicht.


----------



## Andi_CH (22. Aug 2011)

Dann ist die Frage:

"Wie starte ich mit process ein anderes Programm?"

Ich rätsle etwas, weil ich selbst auch nicht sattelfest bin, aber ich lerne gerne mit:
"cmd" tönt schon mal komisch - ein jar müsste doch mit java -jar gugus.jar oder so ähnlich gestartet werden?


----------



## hashii (22. Aug 2011)

Aber es funktioniert wenn ich das Programm noch in Eclipse ausführe. Sobald ich es exportiere funktioniert  es nicht, daher glaube ich nicht das es an CMD liegt.


----------



## Michael... (22. Aug 2011)

Zunächst mal: Muss das Archiv unbedingt in einem eigenen Prozess gestartet werden? Falls man die Klassen "kennt" könnte man ja die main(...) einfach direkt aufrufen.

Ein einfaches 
	
	
	
	





```
Runtime.getRuntime().exec("java -jar pfadzuMeinemJar/mein.jar");
```
 sollte ausreichen, vorausgesetzt der Basispfad aus dem 
	
	
	
	





```
java
```
 aufgerufen wird bzw. der Pfad zum anderen jar passt.

Liegen beite Archive im selben Verzeichnis und wird das erste jar aus seinem Verzeichnis oder per Doppelclick gestartet sollte folgendes funktionieren:

```
String cmd = "java -jar \"" + System.getProperty("user.dir") + "\\meinjar.jar\"";
Runtime.getRuntime().exec(cmd);
```

ProcessBuilder gibt's erst ab Java 1.6 daher kann ich nicht sagen/testen ob es sich da ähnlich verhält.

******************************
Edit: ProcessBuilder gibt es doch schon seit 1.5


----------



## Andi_CH (22. Aug 2011)

```
package irgendein.packet;

import hello.world.SayHello;

public class StarteHelloWorld {

	public static void main(String[] args) {
		SayHello.main(args);
	}
}
```

Geht natürlich wunderbar, aber eben nicht als eigener Prozess.

Da steht es, aber ich bringe es nicht fertig dem ProcessBuilder den richtigen Pfad mitzugeben.

TO - liest du mit? Bist du schon weiter?


----------



## hashii (22. Aug 2011)

Hallo jep, Danke viel mal micheal und andi, 

so hat es geklappt

```
String file = "\\\\Server\\e\\CMHES\\version\\cmhes-"+CmhesUpdateManager.getVersionNumber()+".jar";
		System.out.println(file);
		String cmd = "java -jar \"" + file;
		try {
			Runtime.getRuntime().exec(cmd);
		} catch (IOException e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
			System.out.println("errror");
		}
		//Open.File(file);
		System.exit(1);
```

Und es darf kein Abstand im Pfad haben, dann geht es wieder nicht.

Danke euch sehr, schönen Tag noch.


----------

