从Java运行Ruby脚本

从Java运行Ruby脚本,java,ruby-on-rails,ruby,Java,Ruby On Rails,Ruby,我正在尝试通过执行以下操作从Java运行Ruby脚本: public static void main(String[] args) { try { Process process = Runtime.getRuntime().exec("ruby /path/to/file/file.rb"); process.waitFor(); System.out.println(process.exitValue()); }

我正在尝试通过执行以下操作从Java运行Ruby脚本:

public static void main(String[] args) {
    try {
        Process process = Runtime.getRuntime().exec("ruby /path/to/file/file.rb");
        process.waitFor();
        System.out.println(process.exitValue()); 
    } 
    catch (Exception e) {
        e.printStackTrace();
    }
}
当我运行此操作时,我得到
1
作为退出值。在我的Ruby脚本中,我使用的是Watir和Nokogiri,因此应该使用浏览器。什么也没发生


如果我将
ruby/path/to/file/file.rb
复制到终端中,它将正常运行。有什么原因不能正常工作吗?

您需要使用标准输出和标准错误流,以从流程中获取输出并找出错误所在。请参阅“.”的答案。

您需要使用标准输出和标准错误流,以便从流程中获得输出并找出错误所在。查看“.”的答案。

当Java运行时,它是以您的权限从您的帐户运行,还是以另一个不同的用户身份运行?该用户的权限是否正确?Ruby知道它的库/gems在哪里吗?Ruby版本与您在终端上运行的版本相同吗?您必须确保环境(环境变量、加载的ruby版本、gem集(如果有的话))在java运行时中是相同的process@Guilherme我如何检查它们是否是相同的版本?@user081608能否打印Runtime.getRuntime().exec(“导出”)和Runtime.getRuntime().exec(“ruby-v”)的输出?运行时,我的终端版本为2.4.0p0,而我的版本为2.0.0p648。这些会有什么不同?JVM有自己的Ruby吗?当Java运行时,它是以您的权限从您的帐户运行,还是以另一个不同的用户身份运行?该用户的权限是否正确?Ruby知道它的库/gems在哪里吗?Ruby版本与您在终端上运行的版本相同吗?您必须确保环境(环境变量、加载的ruby版本、gem集(如果有的话))在java运行时中是相同的process@Guilherme我如何检查它们是否是相同的版本?@user081608能否打印Runtime.getRuntime().exec(“导出”)和Runtime.getRuntime().exec(“ruby-v”)的输出?运行时,我的终端版本为2.4.0p0,而我的版本为2.0.0p648。这些会有什么不同?JVM有自己的Ruby吗?