Я пытаюсь открыть консоль терминала и иметь возможность читать / записывать команды для нее.
Я читаю некоторые вопросы, такие как: Процесс Java с потоком ввода / вывода
Благодаря этому удалось создать небольшое приложение, которое открывает терминал и передает команды на консоль и выводит результат обратно, оно хорошо работает с любой системной командой, такой как просмотр папок, удаление файлов и тому подобное.
У меня проблема в том, что мне нужно загрузить другую консоль java с этой консоли и прочитать ее вывод, но эта программа использует java.util.logging.Logger для отправки большей части своего вывода, и по какой-то причине мое запускающее приложение не может прочитать, чтоLogger печатает.
По сути, я пытаюсь создать как обертку для другого Java-приложения, потому что я хочу взаимодействовать с ним, но не могу изменить его.
Спасибо за вашу помощь.
РЕДАКТИРОВАТЬ
Вот код, но он в основном взят из других вопросов, а также, как я сказал, он работает для вещей в "нормальном" стандартный вывод, ноне для вывода Logger печатает на консоль.
package launcher;
import java.io.*;
import java.util.Scanner;
public class Launcher {
public static void main(String[] args) throws IOException {
String line;
Scanner scan = new Scanner(System.in);
Process process = Runtime.getRuntime().exec("/bin/bash");
OutputStream stdin = process.getOutputStream();
InputStream stderr = process.getErrorStream();
InputStream stdout = process.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(stdout));
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(stdin));
while (scan.hasNext()) {
String input = scan.nextLine();
if (input.trim().equals("exit")) {
writer.write("exit\n");
} else {
writer.write("((" + input + ") && echo --EOF--) || echo --EOF--\n");
}
writer.flush();
line = reader.readLine();
while (line != null && !line.trim().equals("--EOF--")) {
System.out.println("Stdout: " + line);
line = reader.readLine();
}
if (line == null) {
break;
}
}
}
}