2015-07-16 4 views
8

का उपयोग करके uberjar बनाते समय जावा के विशिष्ट संस्करण को कैसे लक्षित करें I Lein uberjar का उपयोग करके एक स्टैंडअलोन जार बनाएं। यह जावा लैपटॉप पर चल रहा है जो मेरे लैपटॉप पर पूरी तरह से ठीक काम करता है। हालांकि मेरे कॉलेज के कंप्यूटर जावा 1.7.0_60 चलाते हैं।Leiningen

मेरे प्रोजेक्ट के अंदर .clj मैंने जावा 1.7 को संकलित करने के लिए :javac-options ["-target 1.7"] जोड़ा है, हालांकि यह वही त्रुटि देता है जब उस जार को जावा 1.8 के लिए संकलित किया जाता है। त्रुटि: Unsupported major.minor version 52

शायद मेरे प्रोजेक्ट.क्लोज़ में :javac-options ["-target 1.7"] के अतिरिक्त को संकलित करने वाले संस्करण पर कोई प्रभाव नहीं पड़ रहा है, मुझे यकीन है, कृपया मदद करें!

+1

आपकी project.clj कैसा दिखता है? क्या आप किसी भी पुस्तकालय पर निर्भर करते हैं जो जावा 8 के साथ संकलित हो सकता है? –

+0

समस्या पुस्तकालयों में से एक के साथ थी। धन्यवाद! –

उत्तर

0

ऐसा लगता है कि आप :javac-options गलत का उपयोग कर रहे हैं। लीन दस्तावेज़ में उल्लिखित इस विकल्प का उपयोग करने का प्रयास करें: :javac-options ["-target" "1.6" "-source" "1.6" "-Xlint:-options"]

3

क्लोजर वर्तमान में जावा कक्षाओं के लिए संकलित है जो जावा 1.6 के पीछे संगत हैं, इसलिए यह समस्या नहीं है Leiningen javac विकल्प। मैं अपनी परियोजनाओं में से एक पर एक ही समस्या में भाग गया। मुद्दा यह है कि आप जिन पुस्तकालयों का उपयोग कर रहे हैं उनमें से एक जावा संस्करण के लिए संकलित है। जब आप एक überjar बनाते हैं, तो लीनिंगेन बस कक्षाओं को आपके निर्भरता जार से प्रतिलिपि बनाता है, इसलिए आपको उनके पास जो भी क्लास फ़ाइल संस्करण मिलते हैं।

मेरे मामले में इस समस्या को हल करने के लिए मुझे गीथब पर निर्भरता परियोजना को फोर्क करना था और इसे जावा 1.6 संगत कक्षाएं बनाना था, और फिर मेरी लेंसिंग परियोजना मुख्य परियोजना के बजाय कांटा पर निर्भर करती है।

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