04
Фев
2012

Как перехватить ввод/вывод консольного приложения в Java?

Пытаюсь написать графическую оболочку для консольной программы (модификация сервера Minecraft - http://u.to/-aJ6AQ). Подскажите, как из моей программы запустить стороннее консольное приложение и отобразить его вывод в моей программе в JTextPane (или хотя бы вывести через System.out.printin, в текстовое поле я и сам запихну))? Ну и, если знаете, подскажите, как вводить команды в это консольное приложение через мою программу. Вот что пока у самого получилось:

Process p = Runtime.getRuntime().exec("java -jar  \"путь_к_файлу.jar\"");
String line;
BufferedReader input = new BufferedReader(new InputStreamReader(p.getInputStream()));
while ((line = input.readLine()) != null) {
    System.out.println(line);
}
input.close();

Пишет только две первые строчки и останавливается (хотя должно быть больше...)


Попробовал сделать с ProcessBuilder:

    String javaBin = System.getProperty("java.home") + File.separator + "bin" + File.separator + "javaw";
    ArrayList command = new ArrayList();
    command.add(javaBin);
    RuntimeMXBean RuntimemxBean = ManagementFactory.getRuntimeMXBean();
    Object[] tmpOptsObj = RuntimemxBean.getInputArguments().toArray();
    for (Object s : tmpOptsObj) {
        command.add(s.toString());
    }
    command.add("-jar");
    command.add("C:\\SERVER\\craftbukkit.jar");
    ProcessBuilder builder = new ProcessBuilder(command);
    try {
        final Process process = builder.start();
        BufferedReader br = new BufferedReader(new InputStreamReader(process.getInputStream()));
        String line;
        while ((line = br.readLine()) != null) {
            System.out.println(line);
        }
        System.out.println("Program stopped!");
        System.exit(0);
    } catch (IOException e) {
        System.out.println("Error");
    }

Вывод консоли: run: 174 recipes 27 achievements

Тут очень много символов ">"

ПОСТРОЕНИЕ ОСТАНОВЛЕНО (общее время: 28 секунд)

Источник: https://ru.stackoverflow.com/questions/77040/%D0%9A%D0%B0%D0%BA-%D0%BF%D0%B5%D1%80%D0%B5%D1%85%D0%B2%D0%B0%D1%82%D0%B8%D1%82%D1%8C-%D0%B2%D0%B2%D0%BE%D0%B4-%D0%B2%D1%8B%D0%B2%D0%BE%D0%B4-%D0%BA%D0%BE%D0%BD%D1%81%D0%BE%D0%BB%D1%8C%D0%BD%D0%BE%D0%B3%D0%BE-%D0%BF%D1%80%D0%B8%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F-%D0%B2-java

Тебе может это понравится...

Добавить комментарий