Java - ProcessBuilder没有输出我的python文件

时间:2017-02-17 08:04:44

标签: java file

一些上下文:我试图在java上创建一个GUI,并在我点击GUI上的按钮后运行python代码。例如,如果我按下java GUI上的start,它将在文件.py上运行python代码。

为什么不输出任何东西?您也可以通过创建测试python文件并将您自己的文件位置输入到下面的代码中来尝试此操作。

到目前为止

代码:

import java.io.BufferedReader;
import java.io.InputStreamReader;
import javax.swing.JFrame;

public class main_gui extends JFrame {
     public static void main(String[] args) throws Exception {

        ProcessBuilder builder = new ProcessBuilder("cmd.exe",
                "cd \"G:\\...Javaa\\filetranslatorapplication\\file_translator_app.py");
        builder.redirectErrorStream(true);
        Process p = builder.start();
        BufferedReader r = new BufferedReader(new InputStreamReader(p.getInputStream()));
        String line;
        while (true) {
            line = r.readLine();
            if (line == null) {
                break;
            }
            System.out.println(line);
        }
    }
}

要记住两件事:

  1. 与此java文件在同一位置的python文件。
  2. java文件和python文件都在usb上,因此" G:\ .."。
  3. 另外,如果有人有更好的方法通过java gui运行python代码,请随时指出我正确的方向。

2 个答案:

答案 0 :(得分:0)

你的过程根本没有意义。

它只是将cmdcd生成到无效目录(因为它是一个文件)。

你想要的可能是

cmd /c python g:\your\path\foo.py

cmd /c g:\your\path\foo.py

或只是

may\be\full\path\is\needed\python g:\your\path\foo.py

因此,您的代码应如下所示:

ProcessBuilder builder 
    = new ProcessBuilder("cmd.exe", "/c", "python", "g:\\yourpath\\file_translator_app.py");
// or 
// = new ProcessBuilder("python", "g:\\yourpath\\file_translator_app.py");
// or 
// = new ProcessBuilder("cmd", "/c", "g:\\yourpath\\file_translator_app.py");

答案 1 :(得分:0)

以下内容对您有用:

UPDATE product
SET laptop = desktop, 
desktop= laptop 

当我从其他驱动器运行Java应用程序时,会执行此操作。但是,对于您而言,如果它是相同的驱动器,则无需切换到 ProcessBuilder builder = new ProcessBuilder("cmd", "/c \"G: && python Javaa\\filetranslatorapplication\\file_translator_app.py\""); 。您可以使用G:命令执行py文件。