如何在java(Linux)中使用控制台运行另一个java进程
如何在Linux中运行另一个java进程(带有控制台) 我知道我应该使用如何在java(Linux)中使用控制台运行另一个java进程,java,linux,process,xterm,x11,Java,Linux,Process,Xterm,X11,如何在Linux中运行另一个java进程(带有控制台) 我知道我应该使用ProcessBuilder或Runtime.getRuntime().exec()来执行命令, 但我想知道如何显示一个单独的X-window命令终端(例如,/usr/bin/xterm),或者至少显示一个控制台终端窗口,并在其上运行一个带有stdin、stdout、stderr的java进程 有什么解决办法吗?我听说进程。getOutputStream()在xterm上不起作用,但还没有尝试过(因为我使用的是Windows
ProcessBuilder
或Runtime.getRuntime().exec()
来执行命令,
但我想知道如何显示一个单独的X-window命令终端(例如,/usr/bin/xterm
),或者至少显示一个控制台终端窗口,并在其上运行一个带有stdin、stdout、stderr的java进程
有什么解决办法吗?我听说进程。getOutputStream()
在xterm上不起作用,但还没有尝试过(因为我使用的是Windows..)
编辑:我要执行的java程序使用jline,它使用JNI…启动
终端
,您只需运行以下代码:
new ProcessBuilder("/usr/bin/xterm").start();
但我想,这不是你真正需要的。因为,即使您传递命令以运行,也可以将ls
作为参数:
new ProcessBuilder("/usr/bin/xterm", "-e", "ls").start();
您将从xterm
(不是从ls
)获得输出。若要启动流程并获得输出,您需要这样做:
public static void main(String[] args) throws Exception {
// get content of the "/usr/bin" directory
ProcessBuilder pb = new ProcessBuilder("ls", "/usr/bin");
pb.redirectErrorStream(true);
Process p = pb.start();
InputStream is = p.getInputStream();
System.out.println(toString(is));
is.close();
}
public static String toString(InputStream is) throws IOException {
Writer writer = new StringWriter();
char[] buffer = new char[1024];
Reader reader = new BufferedReader(new InputStreamReader(is, "UTF-8"));
int n;
while ((n = reader.read(buffer)) != -1) {
writer.write(buffer, 0, n);
}
return writer.toString();
}
您应该发布一个简单的工作示例,以准确说明您的问题所在。你试过什么?什么不起作用了?@DanielH。这不是问题。我问的是如何在终端中运行java进程。谢谢,所以我应该使用
(新的ProcessBuilder(“/usr/bin/xterm”、“-e”、“java”,等等)).start()
如果计算机有gnome桌面环境,我可能应该使用gnome终端
?