में एक ज्योथन प्रोग्राम पैकेजिंग मैं एक ज्योथन प्रोग्राम को निष्पादन योग्य जार में पैकेज करने की कोशिश कर रहा हूं, जिसे उपयोगकर्ता समय से पहले ज्योथन इंस्टॉल किए बिना चलाने के लिए डबल-क्लिक कर सकता है। आखिरकार, मैं एक अतिरिक्त पुस्तकालय शामिल करना चाहता हूं जिसे मैंने जार के साथ लिखा था, लेकिन फिलहाल मैं एक साधारण प्रोग्राम को पैकेज करने की कोशिश कर रहा हूं और इसे जार से चला रहा हूं।निष्पादन योग्य जार
मैं "जार विधि का प्रयोग" अनुभाग यहाँ में जार निर्देशों का पालन की कोशिश की है: Jython Update 2012 slides
और अंत में यहाँ: stackoverflow Question: Distributing My Python Scripts as Jars with Jython
Jython FAQ: Using the Jar Methodमैं भी स्लाइड 25-28 यहां पर ध्यान दिया है
मैंने अपने मैक पर जेईथन 2.5.3, जेवीएम 1.6, और पायथन 2.7.3 स्थापित किया है जो ओएस एक्स 10.8.3 चला रहा है।
- मेरी Jython स्थापना निर्देशिका से jython.jar की कॉपी बनाएं:
ये कदम मैं के माध्यम से जाना जार बना सकते हैं और इसे चलाने के लिए कर रहे हैं।
zip -r jython_copy.jar Lib
cp myJythonProgram.py __run__.py
(जहां लिब Jython स्थापना निर्देशिका में फ़ोल्डर है) (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
यह काम करता है अगर मेरे कार्यक्रम किसी भी आयात बयानों का उपयोग नहीं करता।
हालांकि मैं एक ऐसे मुद्दे पर चल रहा हूं जहां कुछ पाइथन पैकेज जार चलाते समय नहीं मिल पाएंगे। उदाहरण के लिए, मुझे त्रुटि मिलती है "आयात त्रुटि: कोई मॉड्यूल यादृच्छिक नहीं है" जब मैं अपने प्रोग्राम में from random import random
पंक्ति शामिल करता हूं। जब मैं javax.swing, java.awt, time, या गणित से आयात करता हूं तो प्रोग्राम में लाइनों पर कोई त्रुटि नहीं होती है।
zip jython_copy.jar myLibrary.jar
jar ufm jython_copy.jar othermanifest.mf
साथ ही, मैं अपने पुस्तकालय के साथ एक जार और एक Jython प्रोग्राम है जो मेरी लाइब्रेरी पिछले चरणों का उपयोग कर के साथ-साथ निम्नलिखित अतिरिक्त कदम आयात पैकेज करने की कोशिश की
othermanifest.mf में केवल Class-Path: ./myLibrary.jar
पंक्ति है।
यह भी देता त्रुटि "ImportError: नहीं मॉड्यूल नामित MyLibrary"
मैं या मैं गलत तरीके से क्या कर रहा हूँ में किसी भी अंतर्दृष्टि अन्य कदम मैं ले जाना चाहिए की सराहना करेंगे।
धन्यवाद!
क्या आपने http://wiki.python.org/jython/JythonFaq/DistributingJythonScripts#Using_Maven पर उल्लेखित मेवेन जैथन प्लगइन का उपयोग करने का प्रयास किया है? –
अभी तक नहीं, लेकिन अगर मुझे यह तरीका काम करने के लिए नहीं मिल रहा है तो यह मेरा अगला कदम है। – Kyle