Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/325.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.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 将实时SSH控制台输出重定向到JFrame_Java_Ssh_Console_Real Time_Output - Fatal编程技术网

Java 将实时SSH控制台输出重定向到JFrame

Java 将实时SSH控制台输出重定向到JFrame,java,ssh,console,real-time,output,Java,Ssh,Console,Real Time,Output,我正在调用plink,以便使用来自Java的ssh在远程位置执行shell脚本。当我从ssh控制台取回缓冲数据时,我想将它们实时写入JTextField等(后端代码执行大约10分钟并不断生成一些字符串) 执行此操作时,执行将挂起,直到后端代码完全执行并一次显示所有输出。如果我对DirectEclipse控制台执行此操作,它将在执行时逐行写入。有什么建议吗 //JFrame Component public GUIApplicationConsoleFrame(String tit

我正在调用plink,以便使用来自Java的ssh在远程位置执行shell脚本。当我从ssh控制台取回缓冲数据时,我想将它们实时写入JTextField等(后端代码执行大约10分钟并不断生成一些字符串)

执行此操作时,执行将挂起,直到后端代码完全执行并一次显示所有输出。如果我对DirectEclipse控制台执行此操作,它将在执行时逐行写入。有什么建议吗

    //JFrame Component
    public GUIApplicationConsoleFrame(String title) {
    dispFrame = new JFrame(title);
    opArea = new JTextArea("");
    ipField = new JTextField();


    // Writing Output, redirected to JTextArea
    if (std.available () > 0) {
            value = std.read ();
            out((char) value);

            while (true) {
                value = std.read ();
                out((char) value);
                if (<terminating condition>)
                    if (++count==2)
                        break;
                Thread.sleep(3);
            }
        }
//JFrame组件
公共GUI应用程序解决方案名称(字符串标题){
dispFrame=新JFrame(标题);
opArea=新的JTextArea(“”);
ipField=新的JTextField();
//写入输出,重定向到JTextArea
如果(标准可用()>0){
值=std.read();
输出((字符)值);
while(true){
值=std.read();
输出((字符)值);
如果()
如果(++计数==2)
打破
睡眠(3);
}
}
谢谢,
Arya

您应该将ssh放在后台线程中,并从中更新JTextArea。这样您就不会阻止事件调度线程,并且即使后台(工作线程)线程未终止,它也能够更新图形界面