После Using Jython Within Java Applications я мог бы интегрировать Java и Jython (Java-методы могут вызывать скрипты python). Код python находится внутри каталога py
. Jython использует команду sys.path.append("py")
для поиска сценариев Jython.Поиск файлов в файле jar (включая файлы классов Jython в файле jar)
Затем я попытался интегрировать все файлы в один файл jar.
Для предварительного шага я мог сгенерировать один файл jar и скопировать каталог py вместе с файлом jar, и он отлично работает. Я использовал IntelliJ IDEA для создания файла jar.
│ └── py
│ ├── Context$py.class
│ ├── Context.py
│ ├── Host$py.class
│ └── Host.py
├── aggregationPython.jar <-- Generated jar file
Для следующего шага, я попытался скопировать каталог ру в файле фляги, я также использовал IntelliJ для этого.
Я проверил, что файл jar имеет папку py в файле jar. Вы видите, что каталог py находится в корневом файле jar.
Однако, когда я выполнил .jar файл, я получил сообщение об ошибке говорящее модуль Jython отсутствует.
> java -jar aggregationPython.jar
Exception in thread "main" ImportError: No module named Host
Что может быть неправильным? Я предположил, что каталог py может быть сохранен в файле jar, который будет найден точно так же, как он найден вне файла jar. Что не так с этим допущением?
Попробуйте поместить файлы python в верхнюю папку файла jar и посмотреть, работает ли это. –
@ daniel kullmann: Он уже находится в верхнем каталоге; то, что показано в вопросе, - это распакованный файл jar. – prosseek
Я имел в виду без каталога py, так что, например, Host.py находится непосредственно в верхней папке zip-файла –