Объединение файлов Python внутри jar для доступа через jython - PullRequest
2 голосов
/ 07 июня 2011

В следующем коде я просто выполняю test.py из кода Java, используя jython

public static void main(String[] args) {
  org.python.util.PythonInterpreter python = new org.python.util.PythonInterpreter();
  python.execfile("test.py");
  ...

Моя проблема в том, что test.py должен находиться в том же каталоге, откуда запускается jar-файл.
Мне нужно, чтобы этот test.py был в комплекте с jar-файлом и все еще мог выполнять его с помощью jython.

Подход, предложенный в Как вы вызываете скрипт python внутри файла jar, используя python? , чтобы прочитать скрипт в строке, используя метод getResourceAsStream из класса ClassLoader, не будет работать для меня, так как мой test.py импортирует больше python скрипты все в комплекте внутри банки.

Будучи новичком в Java и Jython, я действительно запутался.
Любая помощь будет высоко оценена ..!

Ответы [ 2 ]

6 голосов
/ 07 июня 2011

Вы можете просто поместить test.py в корень jar, а остальные сценарии будут организованы так, как они бы были на fs в обычном python. Тогда вы можете сделать что-то подобное:

public static void main(String[] args) {
  org.python.util.PythonInterpreter python = new org.python.util.PythonInterpreter();
  python.exec("import test");
  python.exec("test.callsomthing()");
}

импорт в test.py должен работать как обычно, включая импорт других модулей из test.py.

0 голосов
/ 07 июня 2011

Извлеките файл python из фляги, используя "getResourceAsStream" класса.

См. Например: http://fiji.sc/wiki/index.php/Jython_Scripting#Distributing_jython_scripts_in_a_.jar_file

...