2016-06-30 26 views
1

Ich habe einen Code, der für die Ausführung einer ausführbaren Datei aus Java-Code steht. Das Programm läuft bis heute reibungslos. Ich weiß nicht, was ich geändert haben aber ich folgende Fehlermeldung erhalte:Das System kann die angegebene Datei nicht finden ausführbar von Java

Cannot run program "\Release\program.exe" (in directory "I:\Release\"): CreateProcess error=2, The system cannot find the file specified

Der Code ich verwende ist die folgende:

Process proc = rt.exec("Release\\program.exe", null, new File("I:\\Release\\")); 

Was ist das Problem hier sein könnte? Es hat früher gut funktioniert.

EDIT:Process proc = rt.exec("program.exe", null, new File("I:\\Release\\"));

bekam ich den gleichen Fehler. Wenn ich aus dem Explorer-Befehl

> I:\\Release\\program.exe 

das funktioniert gut

+1

Gibt es einen Ordner namens "Release" im Pfad I: \ Release? – NoRelect

+1

Existiert die Datei 'I: \ Release \ Release \ program.exe'? – Andreas

+0

"Andreas Ich weiß, es ist seltsam, es war die Art, wie es funktionierte, bis ich weiß. Wenn ich die Version entferne, wird es auch nicht funktionieren. Vom Explorer aus führe ich den folgenden Befehl: I: \ Release \ program.exe –

Antwort

1

Können Sie das versuchen?

// Java runtime 
Runtime runtime = Runtime.getRuntime(); 
// Command 
String command = "I:/Release/program.exe" ; 
// Process 
Process process = runtime.exec(command, null, new File("I:/Release")); 
+0

Okay, diese Sache hat funktioniert. Aber warum? Was ist der Unterschied? –

+0

Ich kann nicht erklären. Ich habe das bereits in der Vergangenheit verwendet und ich hatte keine Das einzige, was ich sagen kann, ist, dass Sie '/' anstelle von '\\' für Pfade verwenden sollten, auch wenn Sie mit Windows mit Java arbeiten.Auch sollten Sie den absoluten Pfad für Programme und nicht relative Pfade verwenden. –

+1

@Jose Ich hatte gerade das selbe Problem und musste die Quelle von ['ProcessBuilder.start'] durchforsten (https://docs.oracle.com/javase/8/docs/api/java/lang/ProcessBuilder.html#start- -), was mich zur [Windows 'CreateProcess' Funktion] (h ttps: //msdn.microsoft.com/en-us/library/windows/desktop/ms682425 (v = vs.85) .aspx). Das Dokument für "lpCommandLine" erläutert, wo es nach dem Programm sucht. Soweit ich das beurteilen kann, ist das Verzeichnis nur so gesetzt, dass der Befehl die gewünschte cwd erhalten kann, aber es wird nicht verwendet, um den Befehl selbst zu finden. – whrrgarbl

2

Angenommen, Ihre Ordnerstruktur wie folgt aussieht:

I:\Release\program.exe 

Ihr Code würde dann so aussehen müssen:

Process proc = rt.exec("program.exe", null, new File("I:\\Release\\")); 

EDIT: Versuchen Sie stattdessen:

ProcessBuilder proc = new ProcessBuilder("I:\\Release\\program.exe"); 
proc.start(); 
+0

Scheint Sinn zu ergeben , aber ich habe den gleichen Fehler. –

+0

Ich habe das gleiche mit ProcessBuilder, :( –

Verwandte Themen