Laufen ein .exe Datei in java-code
Ich versuche zu laufen eine .exe-Datei, die ich generiert haben, innerhalb einer Java-code. Ich habe ein GUI geschrieben in Java und der .exe-Datei wird generiert mit MATLAB (die eigentlich ein Simulink-Modell). Wenn ich das ausführen .exe-Datei separat (d.h. ich Doppel Klick drauf) wird es erstellen Sie eine Ausgabe-Datei ( was ich erwarte), aber wenn ich mein Java-code es öffnet sich die Eingabeaufforderung, aber es wird nicht, erzeugen keine Ausgaben überhaupt -in der Tat bin ich auch nicht sicher, ob es läuft mein .exe-Datei ist oder nicht.
Hier ist mein code:
package combustionModel;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.IOException;
import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class GUIInterface extends JFrame {
JButton b1 = new JButton();
public static void main(String[] args){
GUIInterface gui = new GUIInterface();
}
static class Action implements ActionListener{
public void actionPerformed (ActionEvent e){
JFrame frame2 = new JFrame();
frame2.setVisible(true);
frame2.setSize(100, 200);
final JFileChooser fc = new JFileChooser();
fc.showOpenDialog(null);
File file = fc.getSelectedFile();
System.out.println(file.getAbsolutePath());
try {
Runtime runtime = Runtime.getRuntime();
Process p = Runtime.getRuntime().exec("cmd /c start "+file.getAbsolutePath());
p.waitFor();
} catch (IOException e1) {
//TODO Auto-generated catch block
e1.printStackTrace();
} catch (InterruptedException e1) {
//TODO Auto-generated catch block
e1.printStackTrace();
}
}
}
public GUIInterface(){
setVisible (true);
setLocationRelativeTo(null);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(400,200);
setLayout(new FlowLayout());
JPanel adpanel = new JPanel();
JButton OK = new JButton();
b1.addActionListener(new Action());
adpanel.add(OK);
adpanel.add(b1);
super.add(adpanel);
}
}
Verwenden Sie nicht
Lesen (und umsetzen) alle die Empfehlungen des Wenn Laufzeit.exec() won ' T. Das könnte das problem lösen. Wenn nicht, sollte es mehr Informationen zu der Grund, warum es fehlgeschlagen ist. Dann ignorieren Sie, dass es sich um
Sie müssen verbrauchen den Prozess inputstream, wie beschrieben in der javadoc, wenn möglich, nicht auf dem UI-thread.
Denken Sie daran, dass, wenn Sie dies tun, werden Sie nicht mehr haben java wichtigsten Vorteil der Kompatibilität.
Aber mein code nimmt keine Argumente als input -liest es ein paar Dateien, aber Ihre Verzeichnis ist schon hart codiert in der .exe-Datei - Von dem, was ich sehe, eigentlich läuft mein .exe -sehen, was es schreibt auf die Eingabeaufforderung - aber für einige Grund es nicht erzeugen die output-Dateien, die es angeblich zu generieren! Vielen Dank für Ihre Hilfe! @AndrewThompson
Runtime.exec()
verwenden Sie ein ProcessBuilder
!Lesen (und umsetzen) alle die Empfehlungen des Wenn Laufzeit.exec() won ' T. Das könnte das problem lösen. Wenn nicht, sollte es mehr Informationen zu der Grund, warum es fehlgeschlagen ist. Dann ignorieren Sie, dass es sich um
exec
und bauen die Process
mit einem ProcessBuilder
. Auch brechen String arg
in String[] args
Konto für Argumente, die selbst Leerzeichen enthalten. @fge +1Sie müssen verbrauchen den Prozess inputstream, wie beschrieben in der javadoc, wenn möglich, nicht auf dem UI-thread.
Denken Sie daran, dass, wenn Sie dies tun, werden Sie nicht mehr haben java wichtigsten Vorteil der Kompatibilität.
Aber mein code nimmt keine Argumente als input -liest es ein paar Dateien, aber Ihre Verzeichnis ist schon hart codiert in der .exe-Datei - Von dem, was ich sehe, eigentlich läuft mein .exe -sehen, was es schreibt auf die Eingabeaufforderung - aber für einige Grund es nicht erzeugen die output-Dateien, die es angeblich zu generieren! Vielen Dank für Ihre Hilfe! @AndrewThompson
InformationsquelleAutor Mehdi | 2013-06-28
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen, indem der absolute Pfad
Beispiel
InformationsquelleAutor John
versuchen, diese stattdessen
InformationsquelleAutor shreyansh jogi