JavaFX Mac Terminal外部过程

时间:2019-01-17 12:26:09

标签: macos javafx terminal external-process

使用JavaFX,我试图在Mac OSX的Terminal上运行a.out程序。以下代码在Mac上不起作用。通过编写cmndM = {“ cmd”,“ / c”,“ start”,“ a.exe”}在Windows上可以使用相同的代码。在Mac上怎么了?

protected void onRunClick(ActionEvent evt) throws IOException {
    String exeM="./a.out";
    Runtime runtime=Runtime.getRuntime();
    String[] cmndM= {"/bin/sh","-c",exeM}; Process pm=null; File dirM=new File(pth);
    try {
        pm=runtime.exec(cmndM, null, dirM);}
    }catch (IOException e) {
        msg.setText("Error in running simulation.");
    }
}

1 个答案:

答案 0 :(得分:0)

这可能与文件的位置有关。

我会先尝试使用固定位置,以确保它可以工作。

还要确保文件实际上在pth内部。

package javafxapplication1;

import java.io.File;
import java.io.IOException;
import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;

public class JavaFXApplication1 extends Application {

    @Override
    public void start(Stage primaryStage) {
        Button btn = new Button();
        btn.setText("Say 'Hello World'");
        btn.setOnAction(new EventHandler<ActionEvent>() {

            @Override
            public void handle(ActionEvent event) {
                String exeM="/tmp/a.out";
                Runtime runtime=Runtime.getRuntime();
                String[] cmndM= {"/bin/sh","-c",exeM}; 
                Process pm=null; 
                File dirM=new File("/tmp");
                try {
                    pm=runtime.exec(cmndM, null, dirM);
                }catch (IOException e) {
                    System.out.println("Error");
                }
            }
        });

        StackPane root = new StackPane();
        root.getChildren().add(btn);

        Scene scene = new Scene(root, 300, 250);

        primaryStage.setTitle("Hello World!");
        primaryStage.setScene(scene);
        primaryStage.show();
    }

    public static void main(String[] args) {
        launch(args);
    }
}