JVM关闭后,JavaFX + ProcessBuilder / Runtime.exec()启动进程

时间:2018-09-26 12:12:18

标签: java javafx java-8

我正在经历JavaFX的一个非常奇怪的行为。它与Why are Runtime.getRuntime().exec and ProcessBuilder starting my second jar application after the first one exits?相关,但未得到准确答复。遗憾的是,建议的解决方法不适用于我的需求。

专门从JavaFX应用程序通过ProcessBuilder或Runtime.exec()启动进程时,会出现该行为。这是一个测试代码:

package testingfx;

import java.io.IOException;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;

public class TestingFX extends Application {       

   @Override
   public void start(Stage stage) {
      StackPane root = new StackPane();
      Scene scene = new Scene(root, 300, 250);
      stage.setScene(scene);
      stage.show();

      ProcessBuilder builder; 
      builder = new ProcessBuilder(
            "C:\\Program Files\\MPC-HC\\mpc-hc64.exe");
      try {
         builder.start();
      } catch (IOException x) {
         System.err.println(x);
      }
   }

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

}

如果您恰巧在计算机上安装了MPC-HC,则将按预期在应用程序启动后立即执行它。但是,如果现在我用"C:\\Program Files\\VideoLAN\\VLC\\vlc.exe"替换参数,则VLC仅在关闭应用程序时执行。

我找不到任何有关为什么发生这种情况的信息。 Swing中的相同代码可以按预期工作,那又如何呢?欢迎提出想法。

0 个答案:

没有答案