Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/315.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显示BASH结果_Java_Swing_Bash - Fatal编程技术网

用Java显示BASH结果

用Java显示BASH结果,java,swing,bash,Java,Swing,Bash,我试图在Java生成的shell中运行BASH脚本,然后 用JTextArea显示所述BASH脚本的结果 这是一堂魔术正在(应该)发生的课。 这是我的框架类。 运行时,唯一显示的内容是 “java.lang。UNIXProcess@509d5bae" 有人知道如何正确地执行此操作吗?不会覆盖从中继承的默认方法,因此为什么会显示该值 相反,您可以使用,它将返回一个对象,您可以将其转换为如下字符串: 另外,不要忘记(事件调度线程)上的任务必须快速完成;如果没有,未处理的事件将备份,用户界面将失去响应

我试图在Java生成的shell中运行BASH脚本,然后 用JTextArea显示所述BASH脚本的结果

这是一堂魔术正在(应该)发生的课。 这是我的框架类。 运行时,唯一显示的内容是 “java.lang。UNIXProcess@509d5bae" 有人知道如何正确地执行此操作吗?

不会覆盖从中继承的默认方法,因此为什么会显示该值

相反,您可以使用,它将返回一个对象,您可以将其转换为如下字符串:


另外,不要忘记(事件调度线程)上的任务必须快速完成;如果没有,未处理的事件将备份,用户界面将失去响应,因此请确保使用其他线程。

您可以使用,
InputStream
BufferedReader
读取输出,类似这样的

 InputStream input = process.getInputStream();
 BufferedReader result = new BufferedReader(new InputStreamReader(input));
转换为字符串

 StringBuilder builder = new StringBuilder();
 String line="";
 while((line=result.readLine()) != null){
     builder.append(line + "\n");
 }

请适当地添加
try
catch

您可以看看,现在从这里开始,我如何将生成器数据正确地显示为字符串到JTextArea上?您可以使用
builder.toString
然后使用
textArea.setText(stringFromBuilder)
;令我惊讶的是,在第二次运行后,它确实起了作用。我不知道为什么它第一次不起作用,但现在起作用了!谢谢您的回答,我将把它标记为已回答。@user2875269:虽然lazy没有解决这个问题,但看在上帝的份上,请注意线程。如果尝试在Swing事件线程上读取BufferedReader,将冻结GUI程序。出于这个原因,我建议你接受D先生的答案,而不是这个答案。目前我真的很高兴它能起作用,但我理解为什么D先生的方法更好,我会尽快调查,如果你能接受他的答案,我会接受他的答案。
 InputStream input = process.getInputStream();
 BufferedReader result = new BufferedReader(new InputStreamReader(input));
 StringBuilder builder = new StringBuilder();
 String line="";
 while((line=result.readLine()) != null){
     builder.append(line + "\n");
 }