java - 如何从 Java 执行完全独立的应用程序。喜欢独立进程

标签 java multithreading swing windows-7 process

我有一个启动其他两个进程的主应用程序,我只需要将它们作为一个独立的进程启动。就像在不使用或共享我的主应用程序启动器进程内存或 cpu 的情况下自行运行一样。

但是当我像这样启动它时,其他两个进程不会被执行(他们创建了两个新进程,但不是虚构的),除非我终止主进程。我的计划是在 Windows 下执行它,就像它执行三个应用程序的三个命令提示符一样。

我该如何解决它以便三个执行完全独立运行?

/*This is Process 1 itself*/
try {

  if (myStock.getOs().equals("Linux")) 
  {
    Runtime.getRuntime().exec("java -cp /var/dist/test.jar main.main");        
    Runtime.getRuntime().exec("java -cp /var/dist/test.jar www.webserver_starter");

  } else {

    /*Windows 7 only*/
    String WindowsTemp = System.getenv("MY") + "\\";
    /*This is Process 2*/
    Runtime.getRuntime().exec("java -cp " + WindowsTemp + "dist\\test.jar main.main");        
    /*This is Process 3*/
    Runtime.getRuntime().exec(
        "java -cp " + WindowsTemp + "dist\\test.jar www.webserver_starter");
  }

} catch(Exception e) {
  System.out.println(e);
}

最佳答案

对于 Windows 使用 cmd/c start ... 其中 '...' 是您要调用的命令。

Runtime.getRuntime().exec("cmd /c start java -cp /var/dist/test.jar main.main")

对于 Linux,在命令末尾添加 & 以启动守护进程。

关于java - 如何从 Java 执行完全独立的应用程序。喜欢独立进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8729523/

相关文章:

java - 尝试返回到以前的 JFrame 时遇到困难

java - PipedInputStream - 如何避免 "java.io.IOException: Pipe broken"

java - 在数组中添加数组

c++ - 我不明白这个 : terminate called after throwing an instance of 'std::length_error'

c# - 从死锁更新

java - 在准备好的语句中获取列名而不是值

java - keycloak:检查旧密码是否匹配,如果是则更改为另一个

java - 正则表达式仅匹配一次

java - 使用ExecutorCompletionService对不同依赖项执行并发调用

java - Thread.sleep() 停止我的绘画?