2016-10-27 2 views
1

ich einen C-Code, die ich zusammengestellt haben und hinzugefügt, um Pfad auszuführen, um (I doppelt geprüft habe, dass ich das tun kann)Shell-Befehl bilden Execute überall es in der Lage sein von Java in bestimmten Ordner

Jetzt möchte ich eine GUI machen, um damit einfacher arbeiten zu können. Ich bitte den Benutzer, eine Datei und ein Ausgabeverzeichnis einzugeben.

In einem Klick Taste habe ich den Code, um den Befehl von der GUI auszuführen:

String command = "myprogram -e " + file; 
new ExecuteShellInstruction().main(command,jTextOutputDirectory.getText()); 

ich führen Sie den Code in anderer Klasse:

p = Runtime.getRuntime().exec(command, null, new File(directory)); 

Aber ich bekomme immer diese Fehlermeldung:

Ich habe überprüft, dass, wenn ich genau dasselbe aus dem gleichen Ordner schreibe, es kein Problem gibt.

Irgendeine Idee von dem, was ich mache worng ?, Wenn diese Art von es von einer Frage, die als richtig markiert wurde, erhalten, vielleicht vermisse ich etwas, aber ich habe schon 1 Stunde versucht, Dinge und nichts scheint zu funktionieren.

Vielen Dank!

+0

seine eindeutig erklärt, seine nicht in der Lage, die Datei in der vorliegenden Arbeitsverzeichnis –

+0

@ShreyasSarvothama ja zu lokalisieren, es sagt. Aber wie ich schon erwähnt habe, wenn ich es direkt in diesem Verzeichnis von der Shell mache, funktioniert es einwandfrei. – nck

+0

aber wo arbeitest du deinen Java Code aus .. setze das Verzeichnis zuerst und dann starte es .. shell default directory ist anders und Java-Arbeitsverzeichnis ist anders –

Antwort

1

Endlich habe ich eine Lösung gefunden. Es scheint, als müssten Sie sagen, dass Ihre Anwendung ausgeführt werden kann, indem Sie am Anfang "./" hinzufügen. Etwas wie folgt aus:

String command = "./myprogram -e " + file; 
+0

Verwenden Sie die Überladung, die eine 'String []' akzeptiert, sonst können Sie keine Dateinamen mit Leerzeichen verarbeiten. –

+0

Danke, könnten Sie genau angeben wo? String [] Befehl? – nck

+0

@nck: Siehe ['Runtime'] (https://docs.oracle.com/javase/8/docs/api/java/lang/Runtime.html); beachte auch 'ProcessBuilder', gezeigt [hier] (http://stackoverflow.com/a/20603012/230513). – trashgod

Verwandte Themen