gpt4 book ai didi

java - 在java中重定向jar文件的stdout

转载 作者:行者123 更新时间:2023-12-01 09:40:06 24 4
gpt4 key购买 nike

场景如下 - 我有一个主 java 文件 file1 和一个名为 Minimizejar 文件。我创建了一个名为 MinimizeTableclassobject,它在 jar 中定义。现在,对象的创建会导致一些行被打印到 jar 中定义的 stdout。我只想重定向此输出。除此之外,我的主文件有许多 stdout 行,必须将其打印到 stdout 本身。无论如何,是否可以仅重定向 jar 文件打印的内容而不重定向其余内容?我已经定义了以下情况 -

class file1{
public static void main(String[] args)
{
MinimizedTable M = new MinimizedTable(); //this instantly prints stuff out which I want to be redirected and not printed to stdout.
System.out.println("Hello"); //This line must be printed to stdout.
}
}

有什么方法可以在不接触 jar 文件的情况下执行此操作吗?希望我的解释有意义。

最佳答案

没有任何外部依赖,并对 main 稍作修改:

    System.setOut(new FilteredOutput(System.out));

MinimizedTable M = new MinimizedTable();

System.out.println("Hello");

然后 FilteredOutput 像这样:

import java.io.OutputStream;
import java.io.PrintStream;


public class FilteredOutput extends PrintStream {

public FilteredOutput(OutputStream out) {
super(out);
}

@Override
public void println(String x) {

if (Thread.currentThread().getStackTrace()[2].getClassName().equals(MinimizedTable.class.getName())) {

super.println("From MinimizedTable: "+x);

} else {

super.println(x);

}
}

...

}

关于java - 在java中重定向jar文件的stdout,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38534791/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com