【发布时间】:2013-03-26 19:08:16
【问题描述】:
我正在用 Java 编写一个程序,它依赖于与我位于同一目录中的预编译第三方 JAR。在运行时,我的程序会检查此文件是否存在,如果不存在则下载它。然后执行它的主类。但是,生成的程序会直接将大量文本打印到控制台。有没有办法从stdout“捕获”(并因此隐藏)这个输出并将我自己的输入直接从我的父应用程序返回到stdin?理想情况下,我希望子程序驻留在同一个 JVM 中,所以我想避免使用任何版本的 Runtime.exec()。
【问题讨论】:
-
启动 JAR 时,您可以将输出通过管道传输到文件或其他可读介质吗?
-
预编译的 JAR 直接调用
System.out.print()的变体。由于我无法修改这些调用,还有什么方法可以管道输出吗? -
只要使用
System.setOut -
在执行第三方代码时,您是否执行其他任何操作(例如,在不同的线程中)?我想知道你是否可以使用
System.setOut- 编辑:被击败 1 秒:P -
@robbie_c 目前,我正在将第三方 JAR 作为新线程生成,但这是除父线程之外的唯一线程。我仍然希望我的父线程能够打印到控制台并从控制台接收输入。如果我使用了
System.setOut,这可能吗?
标签: java multithreading jar io spawn