【发布时间】:2011-08-06 18:06:00
【问题描述】:
我想在 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 是在后台启动的,而不是在其他终端中启动的。
谢谢帮助!
【问题讨论】:
-
“其他终端”到底是什么? /dev/ttyN?许多 linux 安装在没有 GUI 的情况下运行。
-
嗯。取决于大局。 Java 被要求独立于平台。好吧,您可能有理由需要依赖平台的东西。在那种情况下,我实际上会像在一个小 shell 包装器中那样将平台相关的东西分开,并调用它以使其可配置(一个使用 Konsole,另一个 Gnome 终端,另一个 eterm 或 xterm ......)。但如果我想保持 Java 的方式,即平台无关,我会尝试在 Java 中制作“终端”:将标准错误和标准输入管道连接到一些 Java“窗口”。
标签: java linux runtime terminal exec