Linux上运行时exec

时间:2011-04-16 03:05:01

标签: java linux runtime terminal exec

我想在Linux上的另一个终端中运行java程序(jar)。 这是我的代码:

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上没有问题,jar在其他控制台中启动。 但是在Linux上,jar是在后台启动而不是在其他终端中启动。

寻求帮助!

1 个答案:

答案 0 :(得分:1)

这取决于Linux发行版和用户选择的桌面环境。

您需要弄清楚您正在使用哪个控制台/终端仿真器,查看其命令行选项并找到允许您指定要运行的命令的选项。例如:

  • gnome-terminal -e "some command"在新控制台中运行some command,在命令退出时关闭控制台。

  • gnome-terminal -e "bash -c \"some command" ; sleep 10\"在新控制台中运行some command,在关闭前等待10秒。

其他控制台/终端模拟器可能会以不同的方式执行此操作...

最后一步是使用Runtime.exec(...)ProcessBuilder和朋友来组合复合命令。