2016-12-14 68 views
1

調用我正在運行的Java程序中使用進程生成調用Python的過程如下圖所示,如何通過文件作爲參數傳遞給Python進程在Java

processBuilder = new ProcessBuilder(
        Arrays.asList(
        "/usr/bin/python", 
        "/opt/gui/oc_db5.py", 
        "-c", 
        "/opt/gui/test.json") 
      ); 

    processBuilder.directory(new File("/opt/gui")); 

    processBuilder.start(); 

位置Python程序是/ opt/GUI目錄下並且還有一個test.json文件也需要作爲參數傳遞,用「-c」選項,但是我看到的是系統正在追加JSON文件路徑的Java程序的位置,然後選擇引起.JSON文件問題的Python代碼。

實際上python程序得到的是/opt/java//opt/gui/test.json。我也嘗試了../../,但它不能用於test.json文件。

有沒有一種方法可以指定.JSON文件作爲python程序的參數?

+0

從python程序中得到的錯誤信息是什麼? –

+0

代碼對我來說看起來很好。 –

+0

如果在命令行中爲.py和.json使用絕對路徑,爲什麼要指定目錄? – Parfait

回答

1

這似乎適用於我。我的意思是,它解決了目錄問題。

try { 
    int exitCode = Runtime.getRuntime().exec("python /opt/gui/oc_db5.py -c /opt/gui/test.json", null, new File("/")).waitFor(); // run program and get exit code 
} catch(Exception e) { // is there an error? 
    e.printStackTrace(); // print error 
} 
+0

如果我從根目錄運行這個程序,我得到了下面的錯誤:沒有這樣的文件或目錄:'/root//opt/gui/test.json'(注意:/ root /附加在test.json之前 – Ammad

+0

並且使用'../'沒有工作嗎? – Arin

+0

是的,它沒有工作,它實際上增加了它,因爲它是。我得到退出代碼= 1。 – Ammad

相關問題