Упаковка программы Jython в исполняемую флягу
Я пытаюсь упаковать программу jython в исполняемый файл jar, который пользователь может просто дважды щелкнуть, чтобы запустить без предварительной установки jython. В конечном итоге я хотел бы добавить дополнительную библиотеку, которую я написал с помощью jar, но в данный момент я просто пытаюсь упаковать простую программу и запустить ее из jar.
Я пытался следовать инструкциям в банке "Используя метод Jar " раздел здесь:Часто задаваемые вопросы по Jython: использование метода Jar
Я также посмотрел на слайды 25-28 здесь:Слайды Jython Update 2012
И наконец здесь:stackoverflow Вопрос: Распространение моих скриптов Python в виде JAR-файлов с помощью Jython
Я установил jython 2.5.3, jvm 1.6 и python 2.7.3 на мой Mac под управлением OS X 10.8.3.
Вот шаги, которые я прошел, чтобы создать банку и запустить ее:
Создайте копию jython.jar из моего установочного каталога jython.zip -r jython_copy.jar Lib
(где Lib - папка в каталоге установки jython)cp myJythonProgram.py __run__.py
(myJythonProgram.py не содержит 'еслиназвание ==главный' линия)zip jython_copy.jar __run__.py
export CLASSPATH=/path/to/my/app/jython_copy.jar:$CLASSPATH
Я попытался запустить банку, используя все три метода:
java org.python.util.jython -jar myapp.jar
java -cp myapp.jar org.python.util.jython -jar myapp.jar
java -jar myapp.jar -jar myapp.jar
Это работает, если моя программа неиспользовать любые операторы импорта.
Однако я сталкиваюсь с проблемой, когда некоторые пакеты python не могут быть найдены при запуске jar. Например, я получаю ошибкуImportError: нет модуля с именем random когда я включаю строкуfrom random import random
в моей программе. При импорте из javax.swing, java.awt, time или math ошибок в строках программы не возникает.
Кроме того, я попытался упаковать jar с моей библиотекой и jython-программой, которая импортирует мою библиотеку, используя предыдущие шаги, а также следующие дополнительные шаги:
zip jython_copy.jar myLibrary.jar
jar ufm jython_copy.jar othermanifest.mf
othermanifest.mf содержит только строку.Class-Path: ./myLibrary.jar
Это тоже дает ошибкуОшибка импорта: нет модуля с именем myLibrary "
Я был бы признателен за понимание того, что я делаю неправильно, или других шагов, которые я должен предпринять.
Спасибо!