2016-12-14 66 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

相关问题