一些上下文:我试图在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);
}
}
}
要记住两件事:
另外,如果有人有更好的方法通过java gui运行python代码,请随时指出我正确的方向。
答案 0 :(得分:0)
你的过程根本没有意义。
它只是将cmd
和cd
生成到无效目录(因为它是一个文件)。
你想要的可能是
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文件。