#java #python
#java #python
Вопрос:
Я реализовал приложение Python и приложение Java. Давайте предположим, что в результате моему приложению Python возвращается True .
Я хотел бы запустить приложение Python через приложение Java, получить результаты из приложения Python в мое приложение Java и выполнить дополнительные вычисления в моем приложении Java.
Я использую Process на Java для этой миссии. В моем примере приложение Python запущено с файлом config.ini в качестве параметра.
String path = "C:\Python_Project\run_app.py configuration\config.ini";
Process p = Runtime.getRuntime().exec("python " path);
Это не работает. Java-приложение не выходит из строя, поскольку я не получаю ничего интересного из приложения Python.
Я решил запустить его через командную строку и обнаружил, что выполнить не удалось, потому что в одном из моих внутренних файлов я использовал импорт следующим образом: из inner_module import Object1
Может быть, это проблема? Я должен запустить его из каталога приложений Python? Но как?
У меня есть два вопроса:
- Это способ изменить путь для запуска моего приложения на Python? Я запускаю приложение Java из своего каталога приложений Java, и мне нужно запустить приложение Python внутри каталога приложений Python?Как я могу изменить перспективу?
- Хорошо ли использовать Process и exec? Должен ли я использовать что-то еще? Как я могу использовать процесс для отправки приложения Python с истинным значением?
Ответ №1:
Вы можете попробовать ProcessBuilder, который позволяет вам установить рабочий каталог. Что-то вроде:
ProcessBuilder pb = new ProcessBuilder(program, argument);
pb.directory(new File("path/to/python/directory"));
Process process = pb.start();
Вы можете получить выходные данные скрипта, прочитав из process.getInputStream()
BufferedReader reader = new BufferedReader(
new InputStreamReader(process.getIntputStream()));
String output;
while((output=reader.readLine()) != null)
System.out.println(output);