Я пытаюсь перенаправить вывод консоли библиотеки Java в JTextArea в моем приложении. Эта библиотека является JPL, мостом между Java и SWI-Prolog (хотя я сомневаюсь, что это имеет большую значимость концептуально).Не удалось перенаправить стандартный вывод в Java
Вот мой код:
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?