संक्षिप्त रूप: यदि आपका मुख्य जार के भीतर है, तो आपको संभवतः अतिरिक्त '-पथ पाथो / yourJar / YourJarsName.jar' की आवश्यकता होगी ताकि इसे स्पष्ट रूप से काम करने के लिए घोषित किया जा सके (भले ही 'YourJarsName.jar' क्लासपाथ पर था) (या , 5 साल पहले पूछे गए मूल प्रश्न का उत्तर देने के लिए व्यक्त किया गया था: आपको प्रत्येक जार को स्पष्ट रूप से पुनर्वितरित करने की आवश्यकता नहीं है, लेकिन ऐसा लगता है, यहां तक कि java6 के साथ आपको अपने स्वयं के जार को फिर से खोलने की आवश्यकता है ...)
लंबा फॉर्म: (मैंने इस बात को स्पष्ट कर दिया है कि मुझे आशा है कि जावा के लिए भी इंटरलेपर्स इस का उपयोग कर सकते हैं)
जैसे कई यहाँ मैं निर्यात करने के लिए ग्रहण का उपयोग कर रहा हूँ: (फ़ाइल-> निर्यात -> 'रन करने योग्य जार फ़ाइल')। Handling लाइब्रेरी हैंडलिंग ’ग्रहण (जूनो) ऑफर पर तीन विकल्प हैं:
opt1: "Extract required libraries into generated JAR"
opt2: "Package required libraries into generated JAR"
opt3: "Copy required libraries into a sub-folder next to the generated JAR"
आमतौर पर मैं ऑप्ट 2 का उपयोग करता था (और ऑप्ट 1 निश्चित रूप से टूट रहा था), हालांकि मैं जिस जार का उपयोग कर रहा हूं, उनमें से एक में मूल कोड मैंने "जंजीर" ट्रिक के साथ तोड़ दिया है जो उस विकल्प को चुनने पर ग्रहण का लाभ उठाता है। यहां तक कि यह महसूस करने के बाद कि मुझे ऑप्ट 3 की आवश्यकता है, और फिर इस स्टैकऑवरफ्लो प्रविष्टि को ढूंढना, मुझे अभी भी यह पता लगाने में कुछ समय लगा कि मुझे अपना मुख्य ग्रहण कैसे शुरू करना है, इसलिए यहां मेरे लिए क्या काम किया गया, क्योंकि यह दूसरों के लिए उपयोगी है ...
यदि आपने अपने जार का नाम दिया है: "fooBarTheJarFile.jar" और सभी को dir को निर्यात करने के लिए सेट किया गया है: "/ theFlyly / QualPath / toYourChosenDir"।
(मतलब 'एक्सपोर्ट डेस्टिनेशन' फ़ील्ड पढ़ेगा: '/theFlyly/qualifiedPath/toYourChosenDir/fooBarTheJarFile.jar')
आपके खत्म होने के बाद, आप ग्रहण पाएंगे, फिर सभी पुस्तकालयों को उस निर्यात निर्देशिका में 'fooBarTheJarFile_lib' नाम के एक फ़ोल्डर में डाल देता है, जिससे आपको कुछ ऐसा मिलता है:
/theFully/qualifiedPath/toYourChosenDir/fooBarTheJarFile.jar
/theFully/qualifiedPath/toYourChosenDir/fooBarTheJarFile_lib/SomeOtherJar01.jar
/theFully/qualifiedPath/toYourChosenDir/fooBarTheJarFile_lib/SomeOtherJar02.jar
/theFully/qualifiedPath/toYourChosenDir/fooBarTheJarFile_lib/SomeOtherJar03.jar
/theFully/qualifiedPath/toYourChosenDir/fooBarTheJarFile_lib/SomeOtherJar04.jar
तब आप अपने सिस्टम पर कहीं से भी लॉन्च कर सकते हैं:
java -classpath "/theFully/qualifiedPath/toYourChosenDir/fooBarTheJarFile_lib/*" -jar /theFully/qualifiedPath/toYourChosenDir/fooBarTheJarFile.jar package.path_to.the_class_with.your_main.TheClassWithYourMain
(Java Newbies के लिए: 'package.path_to.the_class_with.your_main' घोषित पैकेज-पथ है जो आपको 'TheClassWithYourMain.java' के शीर्ष पर मिलेगा जिसमें वह फ़ाइल है जिसमें 'मुख्य (स्ट्रिंग [] args) {.. ।} 'जो आप बाहर के जावा से चलाना चाहते हैं)
ध्यान देने योग्य बात यह है कि आपके घोषित वर्गपथ पर जार की सूची के भीतर 'fooBarTheJarFile.jar' होना पर्याप्त नहीं है। आपको स्पष्ट रूप से '-जर' घोषित करने की आवश्यकता है, और उस जार के स्थान को फिर से घोषित करें।
इस ब्रेक की तरह:
java -classpath "/theFully/qualifiedPath/toYourChosenDir/fooBarTheJarFile.jar;/theFully/qualifiedPath/toYourChosenDir/fooBarTheJarFile_lib/*" somepackages.inside.yourJar.leadingToTheMain.TheClassWithYourMain
रिश्तेदार पथ के साथ बहाल:
cd /theFully/qualifiedPath/toYourChosenDir/;
BREAKS: java -cp "fooBarTheJarFile_lib/*" package.path_to.the_class_with.your_main.TheClassWithYourMain
BREAKS: java -cp ".;fooBarTheJarFile_lib/*" package.path_to.the_class_with.your_main.TheClassWithYourMain
BREAKS: java -cp ".;fooBarTheJarFile_lib/*" -jar package.path_to.the_class_with.your_main.TheClassWithYourMain
WORKS: java -cp ".;fooBarTheJarFile_lib/*" -jar fooBarTheJarFile.jar package.path_to.the_class_with.your_main.TheClassWithYourMain
(जावा संस्करण "1.6.0_27" का उपयोग करके; ubuntu 12.04 पर OpenJDK 64-बिट सर्वर VM के माध्यम से)