Могу ли я заставить jar выполнить скрипт на python? - PullRequest
0 голосов
/ 06 декабря 2011

Есть ли способ вызвать скрипт в банке, не распаковывая его?

Ответы [ 3 ]

3 голосов
/ 06 декабря 2011

Поскольку JAR-файлы представляют собой zip-архивы, вы можете разархивировать один файл в стандартный вывод и передать в Python.

unzip -p your.jar file_in_jar.py | python
1 голос
/ 06 декабря 2011

Python интерпретирует файл с именем «__main__.py», хранящийся в zip-файле, если он вызывается с одним параметром. Поскольку jar-файлы - это zips, все, что вам нужно сделать, это назвать ваш скрипт Python как «__main__.py», или создать скрипт «__main__.py», который импортирует ваш основной скрипт, а из Java вызовите интерпретатор Python как внешний процесс. , передавая путь к файлу .jar в качестве единственного аргумента. (Импорт других модулей Python из скрипта Python будет работать так, как если бы файл .jar содержал структуру каталогов)

Затем вы можете связываться с процессом Python по каналу (stdin / stdout) или с помощью некоторого подхода клиент / сервер (xmlrpc, именованные каналы Unix и т. Д.)

Другой вариант - использовать Jython - интерпретатор Python на основе JVM, чтобы вы могли вызывать код Python непосредственно из кода Java - Есть несколько вариантов интеграции кода Jython в Java-программы, некоторые из которых описаны здесь: http://jythonpodcast.hostjava.net/jythonbook/en/1.0/JythonAndJavaIntegration.html#using-jython-within-java-applications

0 голосов
/ 06 декабря 2011

Если вам нужен только чистый Python, вы можете использовать zipfile .Тогда вы можете использовать что-то вроде подпроцесса или this , если файл уже скомпилирован

Если вы хотите использовать его из кода Java, вы можете использовать что-то похожее на загрузку класса / ресурса вфлягаВариант присутствует здесь , а другой здесь .Я не пробовал это.

...