我正在尝试将 Java 库的控制台输出重定向到我的应用程序中的 JTextArea。有问题的库是 JPL,它是 Java 和 SWI-Prolog 之间的桥梁(尽管我怀疑这在概念上是否有很大的相关性)。
这是我的代码:
PrintStream out = new PrintStream(new MyOutputStream(), true, "UTF-8");
System.setOut(out);
System.setErr(out);
System.out.println("This text is successfully redirected.");
Hashtable<String, Term> solutions[] = Query.allSolutions("append([1],[2],[1,2])");
当我运行此代码时,字符串“此文本已成功重定向”按预期重定向到我的 PrintStream。但是,上述代码段的最后一行会生成一些文本输出,这些文本输出仍会打印在 Java 控制台而不是我的 PrintStream 中。
该方法allSolutions(String)
可以做什么以使其输出不被重定向?难道是它调用了一个生成输出的操作系统进程(它确实调用了 swipl 进程)?如果是这样,我可以在不修改 JPL 代码的情况下重定向其输出吗?