Прочитать стандартный вывод консольного приложения после сбоя IDE - PullRequest
0 голосов
/ 28 января 2019

Иногда Eclipse умирает и оставляет запущенную консольную Java-программу.Я хочу получить доступ к выводу консоли после смерти Eclipse.

Как я могу это сделать?

Я вижу консольную программу в диспетчере задач, поэтому она все еще работает.

Ответы [ 2 ]

0 голосов
/ 28 января 2019

Похоже, я смог сделать это, написав собственный файл Agent.jar с простым кодом

import java.io.File;
import java.io.PrintStream;
import java.lang.instrument.Instrumentation;

public class Agent {
    public static void premain(String args, Instrumentation instrumentation) {

    }

    public static void agentmain(String agentArgs) {
        try {
            PrintStream psout =new PrintStream(new File("C:\\LOG\\out.txt"));
            PrintStream pserr =new PrintStream(new File("C:\\LOG\\err.txt"));
            System.setOut(psout);
            System.setErr(pserr);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

с предварительно созданными файлами.Я сделал это как jar со строкой класса агента в MANIFEST.MF, затем «закачал» в работающую виртуальную машину так же просто, как

public class TestAttachJVM {
    public static void main(String s[]) throws Exception {
        VirtualMachine vm = VirtualMachine.attach("<PID>");
        try { 
          // load agent into target VM
          String agent = "c:\\DIR\\agent.jar";
          vm.loadAgent(agent);
        } finally {    
          // detach
          vm.detach();
        }
    }
}

, затем я закончил выполнение этой простой программы, out.txt и err.TXT заблокирован.к сожалению, я не вижу немедленного вывода, так как программа, которую я пытаюсь подключить, делает вывод каждые 1-4 часа.Я проверю это позже.

0 голосов
/ 28 января 2019

Самый простой способ - сохранить вывод в файл .

Это лучше всего подходит для больших журналов, но также подойдет для вашей ситуации.

...