2011-04-16 83 views
0

我想在Linux的另一個終端上運行java程序(jar)。 這裏是我的代碼:Linux上的運行時執行程序

import java.io.BufferedWriter; 
import java.io.FileWriter; 
import java.io.OutputStreamWriter; 

public class Launcher 
{ 
    public static void main(String[] args) 
    { 
      try 
      { 
       Thread.sleep(6000); 
       Process p; 

       if(System.getProperty("os.name").toLowerCase().contains("win")) 
       { 
        BufferedWriter bw; 
        p = Runtime.getRuntime().exec("cmd.exe /c start java -Xms512M -Xmx512M -jar craftbukkit.jar"); 
        bw = new BufferedWriter(new OutputStreamWriter(p.getOutputStream())); 
        bw.write(launcher + "\r\n"); 
        bw.flush(); 
       } 
       else 
       { 
        Runtime.getRuntime().exec(launcher); 
       } 
      } 
      catch(Exception e) 
      { 
       e.printStackTrace(); 
     } 
    } 
} 

在Windows上是沒有問題的,瓶子是在其他控制檯啓動。 但是在Linux上,jar是在後臺啓動的,而不是在其他終端中啓動的。

Thx求助!

+0

反正什麼是「其他終端」?的/ dev/ttyN?許多Linux安裝都運行時沒有GUI。 – 2011-04-16 03:59:16

回答

1

這將取決於Linux發行版和用戶選擇的桌面環境。

您需要弄清楚您正在使用哪個控制檯/終端仿真程序,查看其命令行選項並找到允許您指定要運行的命令的選項。例如:

  • gnome-terminal -e "some command"運行在一個新的控制檯some command,關閉控制檯的命令退出時。

  • gnome-terminal -e "bash -c \"some command" ; sleep 10\"在新的控制檯中運行some command,等待10秒鐘後關閉。

其他主機/終端仿真器很可能會做不同的...

最後一步是使用Runtime.exec(...)ProcessBuilder和朋友組裝複合命令。

+0

...並且不要忘記,桌面環境可能根本就不存在。 – 2011-04-16 03:59:55