2015-12-22 93 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("\\\\","/") 

(我在代碼中固定的錯誤太)