Как запустить код Python 2.7 из моей Java? - PullRequest
0 голосов
/ 11 мая 2018

У меня есть класс Java Swing, из которого я хочу, чтобы мое приложение Java запускало локальную программу на Python после нажатия кнопки. Следующий код не запускает исполняемый мною Python, который я создал.

 private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {                                         
    try {
        // TODO add your handling code here:
        Process process = 
        Runtime.getRuntime().exec("C:\\Users\\User\\Desktop\\hello.exe");
    } catch (IOException ex) {
        Logger.getLogger(NewJFrame.class.getName()).log(Level.SEVERE, null, ex);
    }

}     

Я даже пытался запустить файл скрипта python, используя:

     private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {                                         
    try {

        Process p= Runtime.getRuntime().exec("C:\\Python27\\python.exe \"C:\\Users\\User\\Desktop\\hello.py\"");
    } catch (IOException ex) {
        Logger.getLogger(NewJFrame.class.getName()).log(Level.SEVERE, null, ex);
    }

}      

У меня пока нет ошибок, как и работа. Я могу запускать приложения, такие как блокнот и т. Д., Используя тот же синтаксис, но я не могу с Python, и я не уверен, как решить эту проблему. Постскриптум У меня есть Python 2.7 PATH в моей переменной окружения. Кроме того, выше только методы для действий, выполняемых кнопками. У меня есть все другие методы и основной класс в моей полной программе.

1 Ответ

0 голосов
/ 11 мая 2018
    Process p= Runtime.getRuntime().exec("cmd /c /K \"C:\\Python27\\python.exe C:\\Users\\User\\Desktop\\hello.py\"");

сделайте так ... вызовите Python из cmd


Я попробовал этот простой пример, и он работал для меня ... Файлы: CallPython.java & hello.py

CallPython.java

import java.util.*;
import java.io.*;

class CallPython{

    public static void main(String args[]){

       try{
            Process proc= Runtime.getRuntime().exec("python hello.py");
            BufferedReader stdInput = new BufferedReader(new InputStreamReader(proc.getInputStream()));

            /*
            BufferedReader stdError = new BufferedReader(new InputStreamReader(proc.getErrorStream()));

            // read the output from the command
            System.out.println("Here is the standard output of the command:\n");
            String s = null;
            while ((s = stdInput.readLine()) != null) {
                System.out.println(s);
            }
            */

            stdInput.lines().forEach(System.out::println);
        }
        catch(IOException e){
            System.err.println("Error occured while executing an external process...");
        }
    }
}

hello.py

print('Hello...from python script');

Выход:

 Hello...from python script

Snippet of output

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...