Próbuję spakować program jython do pliku wykonywalnego jar, który użytkownik może dwukrotnie kliknąć, aby uruchomić bez instalowania jython z wyprzedzeniem. Ostatecznie chciałbym dołączyć dodatkową bibliotekę, którą napisałem w słoiku, ale w tej chwili próbuję tylko spakować prosty program i uruchomić go z słoika.Pakowanie programu Jython w plik wykonywalny
Próbowałem postępując zgodnie z instrukcjami słoiku w sekcji "Korzystanie z metody" Jar tutaj: Jython FAQ: Using the Jar Method
Mam również wyglądały na slajdy 25-28 tutaj: Jython Update 2012 slides
I wreszcie tutaj: stackoverflow Question: Distributing My Python Scripts as Jars with Jython
Zainstalowałem jython 2.5.3, jvm 1.6 i python 2.7.3 na moim macu z systemem OS X 10.8.3.
Są to kroki I przejść przez aby utworzyć słoik i uruchom go:
- utworzyć kopię jython.jar z mojego katalogu instalacyjnym jython.
zip -r jython_copy.jar Lib
(gdzie Lib to folder w katalogu instalacyjnym jython)cp myJythonProgram.py __run__.py
(myJythonProgram.py nie obejmuje 'jeśli nazwa == główny' linia)zip jython_copy.jar __run__.py
export CLASSPATH=/path/to/my/app/jython_copy.jar:$CLASSPATH
Próbowałem uruchomić słoik za pomocą wszystkich trzech następujących metod:
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
To działa, jeśli mój program nie używa żadnych oświadczeń importu.
Jednak pojawia się problem, w którym niektórych pakietów Pythona nie można znaleźć, gdy uruchomię jar. Na przykład pojawia się błąd "ImportError: Brak modułu o nazwie losowy", gdy dołączam wiersz from random import random
w moim programie. Podczas importowania z javax.swing, java.awt, time lub math nie występują żadne błędy na liniach programu.
Dodatkowo starałem się pakować słoik z mojej biblioteki i program jython który importuje moją bibliotekę wykonaniu powyższych czynności, jak również następujące dodatkowe czynności:
zip jython_copy.jar myLibrary.jar
jar ufm jython_copy.jar othermanifest.mf
othermanifest.mf zawiera tylko linię Class-Path: ./myLibrary.jar
.
To też daje błąd „ImportError: No module o nazwie MyLibrary”
Uprzejmie jakiejkolwiek wgląd w to, co robię nieprawidłowo lub inne kroki należy podjąć.
Dzięki!
Czy próbowałeś użyć wtyczki Maven Jython wspomnianej na http://wiki.python.org/jython/JythonFaq/DistributingJythonScripts#Using_Maven? –
Nie, jeszcze nie, ale jeśli nie mogę uruchomić tej metody, to jest to mój następny krok. – Kyle