1

Java コード内で生成した .exe ファイルを実行しようとしています。Java で記述された GUI があり、.exe ファイルは MATLAB (実際には Simulink モデル) を使用して生成されます。.exe ファイルを個別に実行すると (つまり、ダブルクリックすると)、出力ファイルが作成されますが (これは私が期待するものです)、Java コードを実行するとコマンド プロンプトが開きますが、出力は生成されません。すべて-実際、.exeファイルが実行されるかどうかさえわかりません。

これが私のコードです:

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);
    }

}
4

2 に答える 2

1
 Process p = Runtime.getRuntime().exec("cmd /c "+file.getAbsolutePath());

代わりにこれを試してください

 Process p = Runtime.getRuntime().exec("cmd /c start "+file.getAbsolutePath());
于 2013-06-28T12:38:43.777 に答える
1

絶対パスを渡してみてください

Runtime.getRuntime().exec("c:\\program files\\test\\test.exe", null, new File("c:\\program files\\test\\"));
于 2013-06-28T12:37:30.777 に答える