clojure - How to run the jar made from 'lein jar' command? -
यह एक फॉलो-अप है
'lein जार' चलाने के बाद, मैं 'MyProject-1.0.0-SNAPSHOT.jar' है, जो clojure-1.2.0-beta1.jar और clojure-योगदान-1.2 शामिल नहीं है मिलता है। 0-beta1.jar।
और चल रहा 'लीन uberjar' मुझे दो जार फ़ाइलें देता है। पहले वाला (जो कि एंड-स्टॅन्डोनोन के साथ समाप्त होता है) जार में सब कुछ होता है, और दूसरा वाला 'लीन जार' से उत्पन्न जार के समान होता है।
यह दूसरा एक के साथ जार का सवाल है पहले जार के साथ चलने में कोई समस्या नहीं है, जैसा कि मैंने पिछले में बताया था।
जब मैं चलाने
जावा -cp PATH_TO_THE_CLOJURE_AND_CONTRIB.jar: $ CLASSPATH जार MyProject-1.0.0-SNAPSHOT.jar '
, मैं निम्नलिखित । त्रुटि
की वजह से: java.lang.ClassNotFoundException: clojure.lang.IFn पर java.net.URLClassLoader $ 1.run java.security.AccessController.doPrivileged पर (URLClassLoader.java:202) (मूल निवासी विधि ) java.net.URLClassLoader.findClass (URLClassLoader.java:190) java.lang.ClassLoader.loadClass पर (ClassLoader.java:307) जावा में sun.misc.Launcher $ AppClassLoader.loadClass (Launcher.java:301) पर पर .lang.ClassLoader.loadClass (ClassLoader.java:248)
क्या गलत हो सकता है, मैंने सोचा कि मैं MyProject-1.0 'के साथ MyProject-1.0.0-SNAPSHOT.jar उसी तरह' का उपयोग कर सकते हैं। 0-SNAPSHOT-standalone.jar 'अगर मैं -cp विकल्प का उपयोग जार फ़ाइलों को इंगित।
क्या अधिक है कि मैं करना पड़ा है?
जोड़ा
< पूर्व> जावा-सीपी ALLTHE_JAR_PATH myproject.coreइस समस्या का हल करता है।
यदि आप लीनिंगन 1.2 का उपयोग कर रहे हैं, तो संभवत: आपको एक बग से मारा जा रहा है जिससे निर्भरता एक uberjar के निर्माण से पहले नष्ट हो जाएगी (जाहिर है, Uberjar के बिंदु)। कृपया 1 के लिए डाउनग्रेड करें और नई रिलीज (जो शीघ्र ही पहुंचने चाहिए) का इंतजार करें या लीन के हेड के चेकआउट का उपयोग करें (जैसा कि लीनिंगेन में लीनिंग के रीडएम में हैकिंग पर अनुभाग में वर्णित है)।
एक बार जब आप ऐसा करते हैं , आपको लीन uberjar
के साथ एक स्टैंडअलोन जार का उत्पादन करने में सक्षम होना चाहिए और अपने ऐप को लॉन्च करने के लिए java -jar नाम का अपने-स्टैंडअलोन.जर
कहते हैं।
एक विकल्प के रूप में, आप lein jar
के साथ एक नियमित जार बना सकते हैं और जैसे java -cp '$ PROJECT_ROOT / lib / *: your-app.jar' your-app
(जहां your-app.main
आपके ऐप का मुख्य वर्ग है; साथ ही $ PROJECT_ROOT
को उपयुक्त पथ के साथ बदलें और के लिए पथ प्रदान करें आपका- app.jar
, ज़ाहिर है)। lib / *
वस्तु केवल जेडीके 1.6 पर काम करेगी; 1.5 के साथ आपको प्रत्येक जार को अलग से शामिल करना होगा ध्यान दें कि जब -जर
, -cp
और $ CLASSPATH
का उपयोग किया जाता है, तो इसे अनदेखा कर दिया जाता है; केवल जार के मैनिफेस्ट (यदि कोई हो) में निर्दिष्ट क्लासपाथ को ध्यान में रखा जाता है।
Comments
Post a Comment