我有一个使用Runtime.getRuntime.exec运行Python脚本的Java程序,例如:
System.out.println("Flying Circus - running monty.py on " + args[0]);
Runtime.getRuntime().exec("python monty.py " + args[0]);它在我的个人计算机上工作正常,从类文件和JAR文件运行。但是,当我将JAR文件移动到另一台计算机(安装了Java和正确版本的Python,尽管我不知道它是运行的是官方Java还是开源仿制品,如Gnu Common Java)时,python脚本调用会默默地失败,不会出现任何错误。
更重要的是,当我采用完全相同的函数调用,并将它们放在一个只调用python脚本的简约程序中时,它可以正常工作。
我手动检查了有问题的程序,没有发现会导致静默失败的“抓取”的证据,包括糟糕的变量清除,糟糕的变量共享,阻塞/非阻塞和并发问题,或线程。
有人能推荐一个替代函数或包装函数,它必须运行给定的命令并报告任何形式的失败吗?失败包括:“程序没有运行”,“命令行上找不到命令”,以及“程序抛出异常或退出时代码不为0”。
发布于 2019-02-02 02:09:09
找到了问题所在。另一台计算机使用的是开源Java仿制品,可能是Gnu Common Java或类似的)。我以前遇到过Java程序由于其他愚蠢的原因而在我的一个旧Linux VM上由于这些Java山寨而失败的问题。
安装官方的Oracle Java解决了这个问题。提醒:在Linux上,您必须使用sudo运行安装程序,否则它将静默失败,并且不知道发生了什么。
https://stackoverflow.com/questions/51770133
复制相似问题