如何使用ruby获取java输出

我目前正在编写一个需要输出java jar的ruby应用程序。

我目前无法使用open3从java命令获得任何输出。

但是,我使用’ls’成功测试了以下ruby代码。

require 'open3' Open3.popen3('java -version') do |stdrin, stdout, stderr| @output = stdout.read end 

我也尝试过使用java的绝对路径:’/ opt / java / jre / bin / java’没有成功。

先感谢您

java -version写入STDERR,因此以下内容应该有效:

 @output = stderr.read 

在Linux上,您可以通过压缩STDERR或STDOUT来检查输出所在的shell:

 java -version >/dev/null 

仍打印信息。

你需要open3吗? 在Ruby 1.9中,我会这样做:

 pipe = IO.popen( [ '/path/to/java', '-jar', '/path/to/jarfile.jar', {SDTERR=>STDOUT} ] pipe.close_write puts pipe.readlines 

但是,运行Java程序(例如,设置CLASSPATH)通常还有很多工作要做; 所以你可能最好运行运行Java程序的shell脚本。