我想在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是在后台启动而不是在其他终端中启动。
寻求帮助!
答案 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
和朋友来组合复合命令。