Anhand von Jar, andere Jar öffnen

hashii

Mitglied
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

Code:
			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?
 
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 ...
 
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.
 
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?
 
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.
 
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
Code:
Runtime.getRuntime().exec("java -jar pfadzuMeinemJar/mein.jar");
sollte ausreichen, vorausgesetzt der Basispfad aus dem
Code:
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:
Java:
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 😳
 
Zuletzt bearbeitet:
Java:
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?
 
Hallo jep, Danke viel mal micheal und andi,

so hat es geklappt
Code:
		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.
 

Neue Themen


Zurück
Oben