无论如何从我的程序中调用的类的方法获取或拦截输出流(特别是 System.out)?
我正在创建一个Method
名为 的新对象main
,URLClassLoader
用于加载类,然后main.invoke();
使用适当的参数进行调用。
我希望能够从该方法的执行中捕获输出,它仍然显示在屏幕上是可以的,但我也需要能够处理输出。
注意:此方法实际上是一个将连续运行的服务器应用程序。
如果需要进一步澄清,请告诉我,如果这样的事情是可能的,请告诉我。
谢谢你的帮助!
无论如何从我的程序中调用的类的方法获取或拦截输出流(特别是 System.out)?
我正在创建一个Method
名为 的新对象main
,URLClassLoader
用于加载类,然后main.invoke();
使用适当的参数进行调用。
我希望能够从该方法的执行中捕获输出,它仍然显示在屏幕上是可以的,但我也需要能够处理输出。
注意:此方法实际上是一个将连续运行的服务器应用程序。
如果需要进一步澄清,请告诉我,如果这样的事情是可能的,请告诉我。
谢谢你的帮助!
假设您正在谈论 System.out 或 System.err 输出流......
实现您建议的最佳方法是将 OutputStream 作为参数传递。这可能是System.out
但可以很容易地更改为您想要的任何内容。
在不传递参数的情况下执行此操作的一种方法是将默认 System.out 替换为您自己的,它会检查堆栈以确定从何处调用它。我建议你这样做,除非没有其他选择。例如,您无法访问您正在调用的方法的代码。
如果您在谈论其他一些输出流,则必须将使用的输出流的代码替换为允许您跟踪输出的代码。这是最骇人听闻的解决方案,但它会起作用。