有时Eclipse死亡,并且使Java控制台程序运行。我想在Eclipse死后访问控制台输出。
我该怎么做?
我可以在任务管理器中看到控制台程序,因此它仍在运行。
答案 0 :(得分:0)
最简单的方法可能是save the output to a file。
这最适合大型日志,但也适用于您的情况。
答案 1 :(得分:0)
看起来我能够通过使用简单的代码编写自定义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();
}
}
}
包含预先创建的文件。 我用MANIFEST.MF中的Agent-Class字符串将其制成罐子 然后像“ p”一样简单地“注入”到运行中的虚拟机
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小时就会产生任何输出。我待会再检查。