我有一个jar文件,我没有源代码(它相对较旧)。我知道当它运行时,它充当服务器(传入和传出连接),并吐出大量的控制台输出。我想要做的是使用exec启动另一个java应用程序,并将流重定向到自身内部,以便它可以监视jar输出中的某些关键字或时间戳。该计划的目的是跟踪某些事件,并提供事件发生时的更大图景,并“学习”将来如何做出反应。
我猜,从我到目前为止所做的阅读来看,棘手的部分是实时获取数据,而不是在流关闭之后。
我将如何做到这一点?
答案 0 :(得分:1)
用zip程序提取你的jar。查看清单
中的主要类创建一个新类
public class MyLogger {
public static void main (String args[]) throws Exception {
System.setOut(new PrintStream("out.txt"));
System.setErr(new PrintStream("err.txt"));
OriginalClassName.main(args);
}
}
现在只需构建你的类(将Javan类路径设置为原始的.jar,你没有代码)然后一旦用jar工具创建一个新的.jar文件并将你的类设置为是清单中的主要内容
现在,当您运行时,您可以使用tail(使用-f参数)等工具在文件实时写入时将文件内容打印到控制台。 Tail可在Linux和其他Unix平台上使用。对于Windows安装,例如cygwin的。