2014-07-07 305 views
0

我想从java代码中调用ruby脚本。 script.rb文件与java代码位于同一文件夹中。从java代码中调用ruby脚本

try 
{ 
     Process p = Runtime.getRuntime().exec("ruby script.rb"); 
} 
catch (IOException e) 
{ 
    e.printStackTrace(); 
} 

但是,该脚本没有得到执行。有什么建议可以做什么?

+1

你有什么异常?怎么了?根本不值一提? – esrange

+0

也没有得到任何例外。 –

+2

尝试读取进程的错误流/输出流,以更好地了解发生了什么问题。 – Sanjeev

回答

1
import java.io.*; 

public class RubyCall { 
    public static void main(String[] args) { 
     try { 
      Process process = Runtime.getRuntime().exec("ruby script.rb"); 
      process.waitFor(); 

      BufferedReader processIn = new BufferedReader(
        new InputStreamReader(process.getInputStream())); 

      String line; 
      while ((line = processIn.readLine()) != null) { 
       System.out.println(line); 
      } 
     } 
     catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 
} 

我想你忘记了这个过程的输出是不是系统输出。使用此代码,您将看到标准输出上打印的过程输出,并查看是否有任何错误。

+0

添加了您的代码片段。命令正在打印,但脚本不会给出输出 –

+0

您是否期望输出或某些内容应该在环境中进行更改?简要说明您的scipt的预期效果是什么 – hakcho

+0

当然,java代码会得到一组的图像,而红宝石代码处理图像给出一个组合图像 –

1

请尝试以下代码。等待进程执行并检查用ruby文件写入的逻辑。

public static void main(String argv[]) { 
    try { 

     Process p = Runtime.getRuntime().exec("ruby script.rb"); 
     p.waitFor(); 
     System.out.println(p.exitValue()); 
    } 
    catch (Exception err) { 
     err.printStackTrace(); 
    } 
    } 
+0

试过了代码片段。同样的结果:(当ruby代码没有问题,因为我从命令行运行它时得到了正确的结果 –

+0

退出值为0. –

+0

退出值0表示程序正常执行,程序执行成功 –