【问题标题】:python script runs on its own through terminal but not when it's executed in Java with Runtime.getRuntime().exec()python脚本通过终端自行运行,但在Java中使用 Runtime.getRuntime().exec() 执行时不运行
【发布时间】:2015-12-22 04:01:46
【问题描述】:

python 脚本通过终端自行运行,但在 Java 中使用 Runtime.getRuntime().exec() 执行时不运行

这是我的脚本。我在 Eclipse 中以正确的方式设置了我的 python 解释器,但我不知道该怎么做。

#!/usr/bin python

import subprocess

def execute(command):
    process = subprocess.Popen(command,stdout=subprocess.PIPE, shell=True)
    proc_stdout = process.communicate()[0].strip()
    print (proc_stdout)

execute("command 1", "commnand 2", ...)

【问题讨论】:

  • 能否也提供JAVA代码sn-p?

标签: java python eclipse


【解决方案1】:

如果没有看到 java 代码,我将无能为力(问题很可能就在这里)。

我仍然可以建议您不要使用“Runtime.getRuntime().exec()”,而是使用它(可能会解决您的问题):

String yourCommand = "Python ExampleScript.py";
ProcessBuilder pb = new ProcessBuilder(yourCommand);
Process p = pb.start();
p.waitFor();

编辑:如果您使用的是完整路径,请记住使用此:

(几周前我遇到了同样的问题)

yourCommand.replaceAll("\\\\","/")

(我也修正了代码中的一个错误)

【讨论】:

    【解决方案2】:

    所以,正如您提到的,我最终将我的 Java 进程修复为 ProcessBuilder...谢谢!我唯一需要调整的是命令。它需要是一个 String[] 对象,其中前 2 个字符串是“/bin/bash”、“-c”

    String[] cmds = { "/bin/bash", "-c", "python scriptName.py" };
    ProcessBuilder pb = new ProcessBuilder(cmds);
    Process p = pb.start();
    p.waitFor();
    

    【讨论】:

      猜你喜欢
      • 2012-06-01
      • 2011-04-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-25
      • 2017-12-05
      • 2016-11-30
      • 2013-06-27
      相关资源
      最近更新 更多