Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在java(Linux)中使用控制台运行另一个java进程_Java_Linux_Process_Xterm_X11 - Fatal编程技术网

如何在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

如何在Linux中运行另一个java进程(带有控制台)

我知道我应该使用
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终端