2015-12-22 91 views
0

python脚本通过终端自己运行,但不能在运行时使用Runtime.getRuntime()在Java中运行。 exec()python脚本通过终端自己运行,但不是当它通过Runtime.getRuntime()运行在Java中时。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", ...) 
+1

您还可以提供JAVA代码片段吗? –

回答

0

所以,我最终将Java进程修复为ProcessBuilder,就像您提到的那样......谢谢!我必须调整的唯一额外的东西是命令。它需要是一个String []对象,其中前两个字符串是“/ bin/bash”,“-c”

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

没有看到java代码,我不能做太多事情(最可能的问题在这里)。

我仍然建议你不要使用,用这个来代替(可能会解决你的问题) “调用Runtime.getRuntime()EXEC()。”:

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

编辑:如果您正在使用完整路径,记得要使用此:

(我几个星期前有同样的问题)

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

(我在代码中固定的错误太)