2012-04-27 78 views
2

我目前正在編寫一個需要輸出java jar的ruby應用程序。如何用ruby獲取java輸出

我目前無法使用open3從java命令獲得任何輸出。

但是,我用'ls'成功地測試了下面的ruby代碼。我也嘗試使用java的絕對路徑:'/ opt/java/jre/bin/java'沒有成功。

謝謝你,提前

+0

也許有輸出等待從標準錯誤 – theglauber 2012-04-27 16:41:48

+0

讀爲[尼古拉斯B.](http://stackoverflow.com/users/916657/niklas-b)已經應答,'的java -version'寫入'STDERR' 。如果這不能解釋您遇到的問題,請更新問題以顯示更接近您要執行的jar的內容。 – mikej 2012-04-27 16:44:57

+0

是的......我猜測命令與jar文件輸出一個錯誤(要麼沒有找到jar文件,或其他一些事情出錯了,可能是CLASSPATH中缺少的東西)。無法確定沒有更多的信息。 – theglauber 2012-04-27 16:48:52

回答

4

java -version寫至標準錯誤,所以下面應該工作:

@output = stderr.read 

在Linux上,你可以在輸出由supressing或者STDERR或去殼檢查STDOUT:

java -version >/dev/null 

仍然打印信息。

+0

我工作過,非常感謝你=)我一直對我的頭撞了一個小時大聲笑 – 2012-04-27 16:49:41

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腳本可能會更好。