簡體   English   中英

Java-ProcessBuilder沒有輸出我的python文件

[英]Java - ProcessBuilder is not outputting my python file

一些上下文:我試圖在Java上創建GUI,並在單擊GUI上的按鈕后運行python代碼。 例如,如果我在Java GUI上按啟動鍵,它將在文件.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. python文件不在此java文件的同一位置。
  2. Java文件和python文件都位於USB上,因此為“ G:\\ ..”。

另外,如果有人有更好的方法通過java gui運行python代碼,請隨時向我指出正確的方向。

您的過程根本就沒有意義。

它只是生成一個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");

以下應該為您工作:

    ProcessBuilder builder = new ProcessBuilder("cmd",
            "/c \"G: && python Javaa\\filetranslatorapplication\\file_translator_app.py\"");

當我從其他驅動器運行Java應用程序時,將執行此操作。 但是,對於您來說,如果是同一驅動器,則無需切換到G: 您可以使用python命令執行py文件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM