2015-12-02 8 views
5

मैं एक नौसिखिया अभियंता हूं जो अनुभव लेखन PHP, पायथन और रूबी के साथ है। मैं क्लोजर में लिखी गई एक परियोजना में योगदान करने की कोशिश कर रहा हूं। मैं प्रोजेक्ट में लाइब्रेरी जोड़ने की कोशिश कर रहा हूं, लेकिन लाइब्रेरी जोड़ने और lein uberjar चलाने के बाद, मुझे एक त्रुटि मिल रही है। मैं जानना चाहता हूं कि इसका क्या अर्थ है और क्या आप इसे समस्या निवारण के लिए एक विधि की सिफारिश कर सकते हैं। आपकी मदद के लिए अग्रिम धन्यवाद!क्लोजर निर्भरता जोड़ने और लीन uberjar चलने का कारण java.lang.IllegalAccessError

मैं क्या प्राप्त करने के लिए कोशिश कर रहा हूँ अपने प्रोजेक्ट में uap-clj library को शामिल करें और एक jarfile में परियोजना संकलन।

मैंने जो लिखा है मैंने पुस्तकालय को निर्भरता सूची में दूसरी-से-अंतिम आइटम के रूप में जोड़ा है।

:dependencies [[lots-of-dependencies] 
       [uap-clj "1.1.1"] ; user agent parser 
       [another-dependency]] 

क्या मैं lein में भाग गया According to the instructions on github, मेरे परिवर्तन बचत project.clj करने के बाद, मैं lein deps तो lein clean && lein uberjar चलाते हैं।

क्या हुआ अद्यतन और फ़ाइल सहेजने के बाद, चल आदेश एक लंबे स्टैकट्रेस से पहले निम्न त्रुटि देता है:

java.lang.IllegalAccessError: tried to access method clojure.lang.RT.classForNameNonLoading(Ljava/lang/String;)Ljava/lang/Class; from class clj_yaml.core$loading__5340__auto____29, compiling:(flexmaster.clj:1:1) 

और क्या मैंने कोशिश की मैं परीक्षण करने के लिए है कि क्या मैं कर दिया था चाहता था पुस्तकालय जोड़ने में एक गलती। मैंने स्क्रैच से एक नया क्लोजर प्रोजेक्ट बनाया और lein deps और फिर lein uberjar का उपयोग करके एक जर्फ़ाइल बनाया। इसके बाद, मैंने यूएपी-क्लज को जोड़ा: मेरी नई परियोजना में निर्भरता, सहेजे गए project.clj, और lein deps और lein uberjar को फिर से निष्पादित किया गया। मैं सफलतापूर्वक एक जर्फ़ाइल बनाने में सक्षम था, इसलिए मेरा मानना ​​है कि मैं पुस्तकालय को सही तरीके से जोड़ रहा हूं।

मैं किसी अन्य कारण के बारे में नहीं सोच सकता कि क्यों एक और निर्भरता शामिल करने का कार्य मुझे जारफाइल बनाने से रोक देगा। यदि आप कुछ के बारे में सोच सकते हैं तो मुझे प्रदान की गई जानकारी के आधार पर जांच करनी चाहिए, इससे मुझे बहुत मदद मिलेगी। धन्यवाद!

उत्तर

4

ऐसा लगता है कि संदर्भित लाइब्रेरी क्लोजर 1.7.0 पर निर्भर करती है, लेकिन आप स्पष्ट रूप से संस्करण 1.6.0 का संदर्भ दे रहे हैं।

बदलने का प्रयास करें:

[org.clojure/clojure "1.6.0"] 

रहे हैं: [uap-clj "1.0.1"]

:

[org.clojure/clojure "1.7.0"] 

वैकल्पिक रूप से, आप एक पुराने पुस्तकालय की तरह जो Clojure 1.7.0 पर निर्भर नहीं करता संस्करण, संदर्भ सकता है

+0

धन्यवाद! यह बिल्कुल काम करता है! अब मैं हमेशा संस्करण की जांच करना जानता हूं। –

संबंधित मुद्दे