2011-08-23 15 views
5

मैं एक चींटी स्क्रिप्ट का उपयोग कर एक निष्पादन योग्य जार बनाया गया है, केवल बाहरी जार मैं इस्तेमाल किया Joda समय 2.0 था। चींटी निर्माण स्क्रिप्ट "काम करने" लगती थी क्योंकि मुझे किसी भी संकलन त्रुटियों को प्राप्त नहीं किया गया था, और यदि मैं lib निर्देशिका से jode-time 2.0.jar को हटा रहा था तो निर्माण वास्तव में अपेक्षित रूप से विफल हो जाएगा।अपवाद "मुख्य" java.lang.NoClassDefFoundError: org/Joda/समय/ReadableInstant

जावा जार सूत्र में myapp.jar

अपवाद "मुख्य" java.lang.NoClassDefFoundError: ऑर्ग/Joda/समय किसी भी दर पर, जार के निर्माण के बाद मैं जब मैं के साथ चलाने की कोशिश इस त्रुटि मिलती है/ReadableInstant

इस पर कोई विचार? मुझे यकीन नहीं है कि कहां देखना है, सब कुछ ग्रहण के भीतर ठीक काम करता है। किसी भी विचार के लिए धन्यवाद

उत्तर

9

संभवतः, आपके जार में manifest header क्लासपाथ में जोडा-टाइम जार जोड़ने के लिए जावा को नहीं बताता है। java -jar का उपयोग करते समय अन्य क्लासपाथ प्रविष्टियों का यही एकमात्र तरीका है। आप इसे सीधे manifest task के साथ कर सकते हैं, या ऐसा करने के लिए शायद कई अन्य तरीके हैं, जिसमें इसे अपने मौजूदा क्लासपाथ से बनाना शामिल है।

वैकल्पिक रूप से,

java -cp myapp.jar:joda-time-2.0.jar com.foo.YourMainClass 
2

जब तक आप एक कस्टम classloader या JarJar की तरह कुछ का उपयोग कर रहे हैं, तो आप अपने निष्पादन योग्य जार के अंदर बाहरी जार बंडल नहीं कर सकते हैं की कोशिश करो। आपकी मेनिफेस्ट फ़ाइल को क्लासपाथ सूचीबद्ध करने की आवश्यकता होगी, लेकिन JVM आपके निष्पादन योग्य JAR के समान नहीं, आपके निष्पादन योग्य JAR के समान निर्देशिका में सूचीबद्ध JAR की तलाश करेगा।

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