Java में JAR
कंपाइल की गई क्लास फ़ाइलों को एक jar में पैक करें ताकि आप उन्हें एक फ़ाइल के रूप में भेज और चला सकें। Pack.java में सार्वजनिक क्लास Pack रखें, main से packed प्रिंट करें, javac Pack.java से कंपाइल करें, फिर jar --create --file Pack.jar Pack.class से Pack.jar बनाएँ। java -cp Pack.jar Pack से चलाएँ ताकि स्क्रीन packed दिखाए। दूसरा डेमो shipped प्रिंट करता है और ऐसे jar का उपयोग करता है जो Main-Class नामित करता है ताकि java -jar Pack.jar काम करे। यह पाठ jar पैकेजिंग है, JUnit @Test जाँच नहीं और Records accessor प्रिंट नहीं।
एक jar, -cp से चलाएँ
Pack.java खोलें। सार्वजनिक क्लास नाम Pack रखें। बचे हुए SumCheck JUnit assert, बचे Card Records डेमो, बचे Pipe Streams पाइपलाइन और बचे Cue lambda चलन हटाएँ अगर वे jar कहानी दबाते हैं। शिक्षण फ़ाइल एक छोटा main प्रोग्राम है जिसे आप पैक करते हैं, assertEquals टेस्ट क्लास नहीं।
Pack.main के अंदर एक शब्द प्रिंट करें:
System.out.println("packed");
पहले कंपाइल करें:
javac Pack.java
जब ब्रेस मेल खाते हैं, javac चुप रहता है और Pack.class लिखता है। फिर क्लास फ़ाइल से jar बनाएँ:
jar --create --file Pack.jar Pack.class
classpath पर jar से क्लास चलाएँ:
java -cp Pack.jar Pack
स्क्रीन packed दिखाती है। इस शिक्षण आकार के लिए आप ढीली क्लासों से java Pack नहीं चलाते। आप JVM से Pack.jar से Pack लोड करने को कहते हैं।
public class Pack {
public static void main(String[] args) {
System.out.println("packed");
}
}
रास्ता एक बार चलें। javac Pack.java Pack.class बनाता है। jar --create --file Pack.jar Pack.class उस क्लास को Pack.jar में पैक करता है। java -cp Pack.jar Pack Pack.main शुरू करता है। println packed लिखता है। कोई @Test नहीं चलता। कोई t.name() नहीं चलता। कोई stream().map नहीं चलता।
फ़ोल्डर देखते समय शुरुआती नियम कहें: सोर्स कंपाइल करें, .class फ़ाइल से jar बनाएँ, -cp और सार्वजनिक क्लास नाम से चलाएँ। इस पृष्ठ पर Pack.java के अंदर JUnit जाँच न बनाएँ। jar को दूसरा कंपाइलर न मानें — javac अभी भी क्लास बनाता है; jar केवल पैक करता है।
अगर बचे SumCheck फ़ाइल से अभी भी हरा JUnit रिपोर्ट दिखे, Pack पर जाएँ और packed प्रिंट रखें। अगर jar कहे Pack.class नहीं मिला, आर्काइव बनाने से पहले फिर कंपाइल करें।
Main-Class jar, -jar से चलाएँ
वही सार्वजनिक क्लास Pack रखें। प्रिंट बदलें ताकि दूसरा शिक्षण आकार आसानी से नाम दिया जा सके:
System.out.println("shipped");
फिर कंपाइल करें:
javac Pack.java
ऐसा jar बनाएँ जो entry क्लास रिकॉर्ड करे:
jar --create --file Pack.jar --main-class Pack Pack.class
jar लॉन्चर से चलाएँ:
java -jar Pack.jar
स्क्रीन shipped दिखाती है। --main-class Pack jar को बताता है कौन सी सार्वजनिक क्लास में main है। java -jar उस entry को पढ़कर शुरू करता है। प्रत्येक शिक्षण आकार के लिए एक स्पष्ट प्रिंट रखें ताकि स्क्रीन का शब्द आसानी से नाम रहे।
public class Pack {
public static void main(String[] args) {
System.out.println("shipped");
}
}
रास्ता एक बार चलें। javac Pack.java Pack.class ताज़ा करता है। jar --create --file Pack.jar --main-class Pack Pack.class क्लास पैक करता है और entry नाम सहेजता है। java -jar Pack.jar Pack.main शुरू करता है। स्क्रीन shipped दिखाती है। दोनों डेमो को दो शिक्षण आकार रखें। पहले -cp रन सिद्ध करें जो packed चाहता है। फिर -jar रन सिद्ध करें जो shipped चाहता है। दोनों आकार में सार्वजनिक क्लास Pack और jar --create --file की आदत साझा है।
अगर आप ऐसे jar पर java -jar Pack.jar चलाएँ जिसे कभी --main-class नहीं मिला, लॉन्चर असफल होता है क्योंकि entry क्लास सहेजी नहीं गई। वह असफल jar दूसरी शिक्षण फ़ाइल नहीं है। दूसरी शिक्षण फ़ाइल में --main-class Pack शामिल है।
JAR की आदतें
बनाना, classpath रन, Main-Class और -jar रन अलग शुरुआती कदम रहते हैं।
📊 JAR habits for Pack
| आदत | आकार | शुरुआती जाँच |
|---|---|---|
| बनाना | jar --create --file Pack.jar Pack.class |
Pack.class को Pack.jar में पैक करता है |
| Classpath रन | java -cp Pack.jar Pack |
पहले डेमो के लिए स्क्रीन packed दिखाती है |
| Main-Class | jar --create --file Pack.jar --main-class Pack Pack.class |
entry क्लास Pack सहेजता है |
| Jar रन | java -jar Pack.jar |
दूसरे डेमो के लिए स्क्रीन shipped दिखाती है |
| पहले कंपाइल | javac Pack.java |
jar दोबारा बनाने से पहले .class ताज़ा करें |
JAR न JUnit है न Records
JUnit @Test से जाँच चिह्नित करता था और अपेक्षित मान तुलना करता था। Records में संक्षिप्त घटक थे जिन्हें accessor से प्रिंट करते थे। JAR चलाने और भेजने के लिए क्लास फ़ाइलें पैक करता है। आज इन तीन कामों को एक शुरुआती फ़ाइल में न मिलाएँ।
यहाँ packed पहले डेमो का स्क्रीन शब्द है Pack.main से jar रन में -cp के साथ। यह assertEquals(5, ...) नहीं और Tag record से t.name() नहीं है। जब बची SumCheck फ़ाइल अभी भी अपेक्षित 5 की बात करती है, उसे इतिहास छोड़ें और Pack की प्रिंट पंक्ति रखें।
javac के बिना पैक करने को ताज़ा Pack.class नहीं। jar --create के बिना Pack.jar नहीं। -cp या Main-Class -jar पथ के बिना आपने इस पाठ की रन आकार नहीं दिखाए। JUnit एनोटेशन इस पृष्ठ से दूर रखें। record हेडर इस पृष्ठ से दूर रखें।
अंतिम वैकल्पिक पृष्ठ पर फ़ोल्डर जाँच
सफल बनाने के बाद फ़ोल्डर सूचीबद्ध करें। आपको Pack.java, Pack.class और Pack.jar एक साथ दिखने चाहिए। सोर्स संपादित करें, सहेजें, javac Pack.java चलाएँ, वही create आदत से jar दोबारा बनाएँ, फिर दोबारा चलाएँ। पुराना jar संपादन के बाद create छोड़ने पर बदला प्रिंट छिपा सकता है।
अगर jar गायब क्लास फ़ाइल की शिकायत करे, पहले कंपाइल करें। अगर java -cp Pack.jar Pack कुछ न प्रिंट करे, पुष्टि करें main अभी भी println बुलाता है। अगर java -jar Pack.jar कहे main manifest attribute नहीं, --main-class Pack से दोबारा बनाएँ।
SumCheck से @Test Pack में न चिपकाएँ। Card से record Tag पैकेजिंग के स्थान पर न लगाएँ। वैकल्पिक JAR काम क्लास फ़ाइलों का आर्काइव है जिसे -cp या -jar से चलाते हैं।
वैकल्पिक पथ का अंत
आप सार्वजनिक क्लास Pack रख सकते हैं, packed प्रिंट करें, javac Pack.java से कंपाइल करें, jar --create --file Pack.jar Pack.class से Pack.jar बनाएँ, java -cp Pack.jar Pack चलाएँ, फिर shipped प्रिंट करें, --main-class Pack से दोबारा बनाएँ, और java -jar Pack.jar चलाएँ। तालिका create, classpath रन, Main-Class और jar रन अलग करती है। यह कोर्स मानचित्र में Java का अंतिम वैकल्पिक पृष्ठ है।
स्पष्ट पैकेजिंग जोड़ी के लिए Pack डेमो रखें। jar अभ्यास करते समय SumCheck JUnit फ़ाइलें इस पृष्ठ से दूर रखें। jar अभ्यास करते समय Card Records फ़ाइलें इस पृष्ठ से दूर रखें। नए वैकल्पिक विषय गढ़ना इस पृष्ठ से दूर रखें — मानचित्र यहीं समाप्त होता है। ये आदतें वैकल्पिक पथ का चेकपॉइंट हैं। जब पहला रन packed या दूसरा shipped दिखाए, JAR ने इस पाठ के लिए अपना काम किया।
फ़ोल्डर से आखिरी बार: एक सार्वजनिक Pack, मेल खाती .class, Pack.jar मौजूद, create कमांड याद, खुले डेमो से मेल खाता -cp या -jar रन, Scanner प्रतीक्षा नहीं, assertion ज़रूरी नहीं। एक बार और कंपाइल करें, jar दोबारा बनाएँ, और खुले डेमो पर चलाएँ। अगर स्क्रीन अभी भी packed या shipped दिखाए, JAR आकार मज़बूत है और वैकल्पिक Java पथ पूरा है। प्रत्येक पठन के लिए एक स्पष्ट पैकेजिंग आदत रखें ताकि हर बार वही मानचित्र सिखे।
🧠 अपने ज्ञान की परीक्षा करें
अपने ज्ञान की परीक्षा करें
इस इंटरैक्टिव क्विज़ के साथ अपनी चुनौती लें और देखें कि आप विषय को कितनी अच्छी तरह समझते हैं
📝 निर्देश
- हर प्रश्न को ध्यान से पढ़ें
- हर प्रश्न के लिए सबसे अच्छा उत्तर चुनें
- आप जितनी बार चाहें क्विज़ दोबारा दे सकते हैं
- आपकी प्रगति शीर्ष पर दिखाई जाएगी