Runtime.exec() 在尝试执行脚本时出现 java 问题,但某些命令有效

Runtime.exec() issues with java when attempting to execute scripts, but certain commands work

我试图让我的 java 程序使用

执行 python 脚本
import java.lang.Runtime;
public class test
{
  public static void main(String[] args)
  {
  try
  {
    System.out.println("testing");
    Runtime.getRuntime().exec("/usr/bin/python print.py");
  }catch(Exception e){System.out.println("not working");}

  }
}

但是,终端上没有显示任何内容(print.py 简单打印 "THIS IS WORKING")。与此相反,当我使用

Runtime.getRuntime().exec("touch dog.txt");

一个名为 dog.txt 的文件被创建。

我也尝试过 运行

Runtime.getRuntime()exec("./shellscript.sh");

这只是一个 运行 触摸命令的脚本,它也不起作用。

不太确定这里的问题是什么,更有趣的是,昨天 java 程序按预期运行,在此期间我的计算机没有发生大的变化。有人对发生的事情有任何想法吗?

我没有收到任何错误。

我猜你必须等到脚本执行结束。

    try {
        Process process = Runtime.getRuntime().exec("/usr/bin/python print.py");
        process.waitFor();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (InterruptedException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

您可以尝试从进程中读取 exitCode ;-)

好的,我最终通过使用

取得了成功
process p = Runtime.getRuntime().exec("./pyshellthing.sh");
p.waitFor();

shell 脚本只是执行 python 脚本。