Zastanawiam się nad kwestią napisaną w tytule wpisu - czy połączenie Javy i Pythona zda egzamin?
Mam taką sytuację - chciałbym przygotować część programu (przede wszystkim GUI) przy pomocy JavaFX i do tego 'podpiąć' część programu (skrypt) napisanego w Pythonie. Skrypt ten jest napisany dla Pythona 3.4. Wiem, że istnieje coś takiego jak Jython, ale tam jest chyba wsparcie dla pythona wersji 2.
Z tego, co znalazłem wynika, że do wykonania tego zadania wystarczy, że wykorzystam, z dostarczanych przez Javę, metody klasy Process.. Przykład może wyglądać tak:
// https://stackoverflow.com/questions/26171862/java-processbuilder-not-able-to-run-python-script-in-java
package text_clustering;
import java.io.*;
public class Similarity {
/**
*
* @param args
*
*/
public static void main(String[] args){
try{
String pythonPath = "C:/Machine_Learning/Text_Analysis/Ontology_based.py";
//String pythonExe = "C:/Users/AppData/Local/Continuum/Anaconda/python.exe";
ProcessBuilder pb = new ProcessBuilder(Arrays.asList("<Absolute Path to Python>/python", pythonPath));
Process p = pb.start();
BufferedReader bfr = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line = "";
System.out.println("Running Python starts: " + line);
int exitCode = p.waitFor();
System.out.println("Exit Code : "+exitCode);
line = bfr.readLine();
System.out.println("First Line: " + line);
while ((line = bfr.readLine()) != null){
System.out.println("Python Output: " + line);
}
}catch(Exception e){System.out.println(e);}
}
}
Sam jeszcze tego nie testowałem, bo brakuje mi kilka elemetów, jednakże chciałem się zapytać czy ktoś z Was miał okazję łączyć Javę i Pythona ?