什么是Java用于在控制台中输出,以及如何在ruby中捕获它?

时间:2012-08-24 20:34:01

标签: java ruby-on-rails ruby

如果我正在运行IRB并且我使用此处提到的方法http://www.ruby-doc.org/core-1.9.3/Kernel.html#method-i-60来返回ruby版本,那么它可以正常工作。

irb(main):001:0> %x{ruby -v}
=> "ruby 1.9.2p290 (2011-07-09) [i386-mingw32]\n"

但是当我尝试用IR在IRB中做同样的事情时,我可以看到它打印到屏幕但它没有返回。

irb(main):002:0> %x{java -version}
java version "1.6.0_27"
Java(TM) SE Runtime Environment (build 1.6.0_27-b07)
Java HotSpot(TM) 64-Bit Server VM (build 20.2-b06, mixed mode)
=> ""

Java使用什么方法输出到控制台,如何捕获它以便在ruby / rails程序中使用?

1 个答案:

答案 0 :(得分:4)

Java正在使用STDERR打印其版本信息。您可以通过将STDERR路由到STDOUT的流并捕获它们来轻松捕获它。

asdf = `java -version 2>&1`
puts asdf

将输出:

java version "1.6.0_33"
Java(TM) SE Runtime Environment (build 1.6.0_33-b03-424-10M3720)
Java HotSpot(TM) 64-Bit Server VM (build 20.8-b03-424, mixed mode)

在命令行工作时,这是一种非常常见的技术。在命令行处执行man sh,然后使用“REDIRECTION”搜索/REDIRECTION并从那里阅读。