ProcessBuilder, src - bin?

flashray

Erfahrenes Mitglied
Hallo,

möchte eine Starter-JAR für eine Applikation schreiben, die aus einem Server und zwei verschiedenen Clienten besteht. Der Anwender soll über eine einfache GUI aus, die Möglichkeit haben, den Server und die verschiedenen Clienten in beliebiger Anzahl zu starten. Weil die Heapgröße unter anderem eine Rolle spielt habe ich mir gedacht, ich starte jede Applikation sei es Server oder Client separat für sich mit einem ProcessBuilder.

In unserem Projektverzeichnis in Eclipse sind source und binär Dateien separat gehalten. Das Problem ist, das der ProcessBuilder die Class-Dateien nicht findet, und so auch die Applikationen nicht starten kann.

Wie kann ich den ProcessBuilder das beibringen.

Die Methode für das Starten des Servers sieht folgendermaßen aus:
Java:
	public void startServer() {
		int heapSize = 64;
		try {
			heapSize = Integer.valueOf(serverHeapField.getText());
		} catch (Exception e) {
			this.showErrorDialog();
		}

		ProcessBuilder builder = new ProcessBuilder("java", "-Xmx" + heapSize
				+ "m", "net/server/GameServer");
		try {
			Process p = builder.start();
			Scanner scanner = new Scanner(p.getErrorStream());
			System.out.println(scanner.nextLine());
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

Die Ausgabe:
Code:
java.lang.NoClassDefFoundError: net/server/GameServer

Bei der Auslieferung des Projektes möchte das Projektverzeichnis mit der Starter-JAR als Zip weitergeben. Es sollen sowohl source als auch binär-Dateien darin enthalten sein.


Vg Erdal
 

Anhänge

  • projektverzeichnis.jpg
    projektverzeichnis.jpg
    60,1 KB · Aufrufe: 24
Habs nicht ausprobiert, aber zum Start der Anwendung gibt man in Java den vollständigen Klassenname mit.

java mypackage.Mainclass

falls sich die Mainclass in einem anderen Ordner (oder Jarfile) befindet, wird dieser per cp Schalter mitgegeben.

java -cp meinordner mypackage.Mainclass

Gruß
 
Hallo Limago,

deine Idee hat leider auch nicht funktioniert.

Ich habe aber etwas anderes brauchbares entdeckt - Fatjar Plugin für eclipse.

Wenn man damit ein eclipse Projekt exportiert funktioniert alles auf Anhieb, sonst gab es immer Probleme mit Pfaden sämtlicher Ressourcen.

Das ist natürlich nicht direkt die Lösung zu meinem Problem. Hab dann bis auf weiteres die ProcessBuilder aus dem Starter entfernt. Starte einfach alle Clienten in der selben JVM. Das ist zwar nicht optimal, aber man kann nicht immer alles haben :) !

Vg Erdal
 
Hallo,

das mit dem Fatjar hat doch nicht so ganz funktioniert. Ich habe mich getäuscht, weil ich die jar im Projektverzeichnis testweise gestartet hatte. Dort konnte sie natürlich auch auf die Ressourcen zugreifen.

An einem anderen Ort hat sie natürlich die Ressourcen nicht gefunden, weil sie nicht in das jar schaut bzw. findet.

Vg Erdal
 
Zurück