【发布时间】:2017-02-13 08:39:31
【问题描述】:
我正在尝试通过执行以下操作从 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 知道它的库/宝石在哪里吗?
-
ruby 版本和你在终端上运行的一样吗?您必须确保 java 运行时进程中的环境(环境变量、加载的 ruby 版本、gem 集(如果有))是相同的
-
@Guilherme 我如何检查它们是否是相同的版本?
-
@user081608 你能打印 Runtime.getRuntime().exec("export") 和 Runtime.getRuntime().exec("ruby -v") 的输出吗?
-
看起来当我运行时我得到了 2.0.0p648 版本,而我的终端是 2.4.0p0 版本。这些会有什么不同? JVM 有自己的 Ruby 吗?
标签: java ruby-on-rails ruby