2

我目前正在编写一个需要 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',但没有成功。

先感谢您

4

2 回答 2

4

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

@output = stderr.read

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

java -version >/dev/null

仍然打印信息。

于 2012-04-27T16:41:52.503 回答
0

你需要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 脚本。

于 2012-04-27T16:47:49.933 回答