从Java运行Ruby脚本
我正在尝试通过执行以下操作从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()); }
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吗?