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 -versionSTDERRに書き込むため、以下が機能するはずです。

@output = stderr.read

Linuxでは、STDERRまたはSTDOUTのいずれかを押すことにより、出力が行われるシェルをチェックインできます。

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 プログラムを実行するシェル スクリプトを実行する方がよい場合があります。

于 2012-04-27T16:47:49.933 に答える