我想从java代码中调用ruby脚本。 script.rb文件与java代码位于同一文件夹中。从java代码中调用ruby脚本
try
{
Process p = Runtime.getRuntime().exec("ruby script.rb");
}
catch (IOException e)
{
e.printStackTrace();
}
但是,该脚本没有得到执行。有什么建议可以做什么?
我想从java代码中调用ruby脚本。 script.rb文件与java代码位于同一文件夹中。从java代码中调用ruby脚本
try
{
Process p = Runtime.getRuntime().exec("ruby script.rb");
}
catch (IOException e)
{
e.printStackTrace();
}
但是,该脚本没有得到执行。有什么建议可以做什么?
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();
}
}
}
我想你忘记了这个过程的输出是不是系统输出。使用此代码,您将看到标准输出上打印的过程输出,并查看是否有任何错误。
添加了您的代码片段。命令正在打印,但脚本不会给出输出 –
您是否期望输出或某些内容应该在环境中进行更改?简要说明您的scipt的预期效果是什么 – hakcho
当然,java代码会得到一组的图像,而红宝石代码处理图像给出一个组合图像 –
请尝试以下代码。等待进程执行并检查用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();
}
}
试过了代码片段。同样的结果:(当ruby代码没有问题,因为我从命令行运行它时得到了正确的结果 –
退出值为0. –
退出值0表示程序正常执行,程序执行成功 –
你有什么异常?怎么了?根本不值一提? – esrange
也没有得到任何例外。 –
尝试读取进程的错误流/输出流,以更好地了解发生了什么问题。 – Sanjeev