0

Ich möchte Spiele von meinen Apps in Windows starten. Viele dieser Spiele basieren auf lokalen Dateien für Konfigurationen..exe-Datei in Java in einem separaten Verzeichnis ausführen

Dieser ist zur Zeit, wie ich laufe/Ausführen von Dateien außerhalb meiner Anwendung

Process r = Runtime.getRuntime().exec("cmd /c start " + gamePATH); 

ich auch nur versucht habe gamePath als Befehl setzen, aber ich immer noch diesen Fehler aus dem Halo-PC-Spiel erhalten:

Cannot Find "C:\...Directory containing my Java app...\config.txt" 

Es scheint, das "aktuelle Verzeichnis", wenn Java ausgeführt wird, ist der Ort, aus dem es ausgeführt wird. Ich habe versucht, dies ohne Fortschritt:

Process a = Runtime.getRuntime().exec("cmd /c cd " + gamePATH.subSequence(0, gamePATH.lastIndexOf("\\")+1)); 

, die auf der Kommandozeile würde das aktuelle Verzeichnis auf das Verzeichnis die ausführbare Datei enthält. Auch das hat nicht funktioniert, so dass, wenn möglich, jede Anleitung geschätzt werden würde

+1

See [Wenn Runtime.exec() nicht] (http://www.javaworld.com/javaworld/jw-12-2000/jw-1229-traps. html) (& implementieren Sie die darin enthaltenen Empfehlungen). –

Antwort

2

Sie wollen sich Process Builder ansehen. Insbesondere möchten Sie das Arbeitsverzeichnis mit der Methode ProcessBuilder.directory(File) festlegen. Sie führen es mit der Methode start() aus.

Zum Beispiel:

final ProcessBuilder pb = new ProcessBuilder("theExecutable"); 
pb.directory(new File("the/working/directory/path")); 
final Process p = pb.start(); 
+0

Danke! Ich werde es mir ansehen. –

0

Ich hatte ein ähnliches Problem - vergessen Sie nicht vollständigen Pfad zur Datei in der Process Instanz angeben.

Zum Beispiel:

final ProcessBuilder pb = new ProcessBuilder("C:/FolderName/SubFolderName/ExecutableFileName.exe"); 
pb.directory(new File("C:/FolderName/SubFolderName")); 
final Process p = pb.start();