क्या वास्तव में एक जार फ़ाइल होती है?


87

एक प्रशिक्षु के रूप में, मैं अपनी परियोजनाओं में कंपनी कोड का उपयोग करता हूं और वे आमतौर पर मुझे jarकाम करने के लिए एक फाइल भेजते हैं । मैं इसे बिल्ड pathमें जोड़ता हूं Eclipseऔर आमतौर पर सब ठीक है और बांका है।

हालांकि, मुझे यह जानने की उत्सुकता हुई कि प्रत्येक वर्ग में क्या है और जब मैं किसी एक वर्ग को jarफ़ाइल में खोलने का प्रयास करता हूं , तो यह बताता है कि मुझे स्रोत फ़ाइल की आवश्यकता है।

इसका क्या मतलब है? मैं एक C / C ++ बैकग्राउंड से आता हूं इसलिए यह jarपहले से संकलित .oफाइल के समान है और मैं देख सकता हूं कि यह .hसब क्या है? या jarफ़ाइल में वास्तविक कोड है जो मैं उपयोग कर रहा हूं जो एन्क्रिप्ट किया गया है इसलिए मैं इसे नहीं पढ़ सकता हूं?

सारे सवालों के जवाब देने के लिए धन्यवाद!

संपादित करें:
धन्यवाद, दोस्तों, मुझे पता था कि यह एक संग्रह की तरह था, लेकिन मैं इस बात से उलझन में था कि जब मैंने .classफाइलों को खोलने की कोशिश की , तो मुझे यादृच्छिक पात्रों का एक गुच्छा मिला। आउटपुट तब समान था जब मैंने .oसी में एक फ़ाइल खोलने की कोशिश की थी इसलिए मैं सिर्फ यह सुनिश्चित करना चाहता था।
धन्यवाद!




5
@ ब्ल्यू मून: मजेदार बात यह है कि गूगल मुझे यहां ले जाता है। : p
user1036719

@ user1036719 हालांकि यह अच्छा है कि आपको यहाँ उत्तर मिला है, फिर भी एक अन्य लिंक है जो इससे पहले आता है । और यह वास्तव में एक प्रोग्रामिंग प्रश्न नहीं है जिसे एसओ पर प्रोत्साहित करने की आवश्यकता है। हालांकि मैंने वोट को कम या बंद नहीं किया।
पीपी

जवाबों:


88

एक JAR फाइल वास्तव में सिर्फ एक ZIP फाइल है। इसमें कुछ भी हो सकता है - आमतौर पर इसमें संकलित जावा कोड (* .class) होता है, लेकिन कभी-कभी जावा सोर्सकोड (* .java) भी होता है।

हालाँकि, जावा को विघटित किया जा सकता है - यदि डेवलपर अपने कोड को बाधित करता है तो आपको कोई उपयोगी वर्ग / फ़ंक्शन / चर नाम नहीं मिलेगा।


53

हालाँकि, मैं उत्सुक था कि प्रत्येक वर्ग में क्या था और जब मैंने जार फ़ाइल में से किसी एक वर्ग को खोलने की कोशिश की, तो यह बताता है कि मुझे स्रोत फ़ाइल की आवश्यकता है।

जार फ़ाइल मूल रूप से एक ज़िप फ़ाइल होती है .class फ़ाइलें और संभवतः अन्य संसाधन (और जार के बारे में मेटाडेटा)। यह रूप में जावा बाइट कोड सबसे द्विआधारी प्रारूपों की तुलना में एक बहुत अधिक मेटाडाटा का कहना है, वास्तव में जावा के लिए सी तुलना करने के लिए मुश्किल है - लेकिन वर्ग फ़ाइल है स्रोत कोड के बजाय कोड संकलित।

अगर आप या तो जिप फाइल को जिप यूटिलिटी से खोलते हैं या चलाते हैं jar xf foo.jarतो आप इससे फाइल्स निकाल सकते हैं, और उन पर एक नजर डाल सकते हैं। ध्यान दें कि आपको जावा कोड को चलाने के लिए जार फ़ाइल की आवश्यकता नहीं है - क्लास लोडर सीधे क्लास सिस्टम या यूआरएल से, साथ ही जार फ़ाइलों से क्लास डेटा लोड कर सकते हैं।


धन्यवाद, मुझे पता था कि यह एक संग्रह की तरह था क्योंकि मैं इसे अनज़िप कर सकता था लेकिन मैं उलझन में था कि .class फ़ाइलों में से कोई भी पठनीय पाठ क्यों नहीं है। समझाने के लिए धन्यवाद, मुझे लगता है कि एक .class एक .o फ़ाइल की तरह है।
joshualan

19

इसे निष्पादित करने के लिए जार फ़ाइल में क्या है यह समझने का सबसे अच्छा तरीका है:

कमांड लाइन पर जाएं और निष्पादित करें jar tvf jarfilename.jar


13

एक jarफ़ाइल एक ज़िप फ़ाइल होती है जिसमें मेटाडेटा वाली कुछ अतिरिक्त फाइलें होती हैं। (.Jar विस्तार के बावजूद, यह ज़िप प्रारूप में है, और .Zip फ़ाइलों से निपटने वाली कोई भी उपयोगिताओं .jar फ़ाइलों से निपटने के लिए हैं।)

http://docs.oracle.com/javase/8/docs/technotes/guides/jar/index.html

जार फ़ाइलों में किसी भी प्रकार की फाइलें हो सकती हैं, लेकिन उनमें आमतौर पर क्लास फाइलें और समर्थन कॉन्फ़िगरेशन फ़ाइलें (गुण), ग्राफिक्स और एप्लिकेशन द्वारा आवश्यक अन्य डेटा फाइलें होती हैं।

क्लास फ़ाइलों में संकलित जावा कोड होता है, जो जावा वर्चुअल मशीन द्वारा निष्पादित किया जाता है।

http://en.wikipedia.org/wiki/Java_class_file


1
प्लस 1 क्योंकि आप मानक से लिंक करते हैं
Ciro Santilli 冠状 to to to to

10

JAR जावा ARchive के लिए खड़ा है। यह लोकप्रिय ज़िप फ़ाइल प्रारूप पर आधारित एक फ़ाइल प्रारूप है और एक में कई फ़ाइलों को एकत्र करने के लिए उपयोग किया जाता है। यद्यपि JAR को एक सामान्य संग्रह उपकरण के रूप में उपयोग किया जा सकता है, इसके विकास के लिए प्राथमिक प्रेरणा इतनी थी कि जावा एप्लेट और उनके अपेक्षित घटक (.class files, images and sounds) को एक ही HTTP लेनदेन में एक ब्राउजर में डाउनलोड किया जा सकता है, बजाय खोलने के। प्रत्येक टुकड़े के लिए एक नया कनेक्शन। यह उस गति को बहुत सुधारता है जिसके साथ एक एप्लेट को वेब पेज पर लोड किया जा सकता है और कार्य करना शुरू कर सकता है। JAR प्रारूप भी संपीड़न का समर्थन करता है, जो फ़ाइल के आकार को कम करता है और डाउनलोड समय को और अधिक सुधारता है। इसके अतिरिक्त, एक JAR फ़ाइल में व्यक्तिगत प्रविष्टियाँ डिजिटल रूप से एपलेट लेखक द्वारा अपने मूल को प्रमाणित करने के लिए हस्ताक्षरित की जा सकती हैं।


5

जार फ़ाइल में संकलित जावा बाइनरी कक्षाएं हैं, *.classजिनके रूप में .javaइसे कुछ खुले स्रोत डिकॉम्पेलर का उपयोग करके विघटित करके पठनीय वर्ग में परिवर्तित किया जा सकता है । जार में एक वैकल्पिक भी होता है META-INF/MANIFEST.MFजो हमें बताता है कि जार फ़ाइल का उपयोग कैसे किया जाता है - जार के साथ लोड करने के लिए अन्य जार फ़ाइलों को निर्दिष्ट करता है।


3

जार (जावा आर्काइव) में .class फ़ाइलों का समूह होता है।

1. जार फ़ाइल (ज़िप फ़ाइल) बनाने के लिए

 if one .class (say, Demo.class) then use command jar -cvf NameOfJarFile.jar Demo.class (usually it’s not feasible for only one .class file)

 if more than one .class (say, Demo.class , DemoOne.class) then use command jar -cvf NameOfJarFile.jar Demo.class DemoOne.class

 if all .class is to be group (say, Demo.class , DemoOne.class etc) then use command jar -cvf NameOfJarFile.jar *.class

2. जार फ़ाइल (अनज़िप फ़ाइल) को निकालने के लिए

    jar -xvf NameOfJarFile.jar

3. सामग्री की तालिका प्रदर्शित करने के लिए

    jar -tvf NameOfJarFile.jar

2

.Jar फ़ाइल एक .exe फ़ाइल के समान है। संक्षेप में, वे दोनों निष्पादन योग्य ज़िप फाइलें (विभिन्न ज़िप एल्गोरिदम) हैं।

जार फ़ाइल में, आपको फ़ोल्डर्स और क्लास फाइलें दिखाई देंगी। प्रत्येक वर्ग फ़ाइल आपके .o फ़ाइल के समान है, और एक संकलित जावा संग्रह है।

यदि आप एक जार फ़ाइल में कोड देखना चाहते हैं, तो एक जावा डेकोम्पाइलर (यहां स्थित: http://java.decompiler.free.fr/?q=jdgui ) और a .jar चिमटा (7zip वर्क फाइन) डाउनलोड करें।



1

A .jar फ़ाइल में संकलित कोड (* .class फ़ाइलें) और उस कोड से संबंधित अन्य डेटा / संसाधन होते हैं। यह आपको कई फ़ाइलों को एक एकल संग्रह फ़ाइल में बंडल करने में सक्षम बनाता है। इसमें मेटाडेटा भी शामिल है। चूंकि यह एक जिप फाइल है इसलिए यह आपके द्वारा डाले गए डेटा को कंप्रेस करने में सक्षम है।

कुछ चीजें मुझे उपयोगी लगीं।

http://www.skylit.com/javamethods/faqs/createjar.html

http://docs.oracle.com/javase/tutorial/deployment/jar/basicsindex.html

अभ्यास में OSGi पुस्तक JAR फ़ाइलों को परिभाषित करती है, "JAR ज़िप फ़ाइल स्वरूप पर आधारित संग्रह फ़ाइलें हैं, जिससे कई फ़ाइलों को एक ही फ़ाइल में एकत्रित किया जा सकता है। आमतौर पर संग्रह में मौजूद फ़ाइलें संकलित जावा क्लास फ़ाइलों और संसाधन का मिश्रण होती हैं। चित्र और दस्तावेज़ जैसी फाइलें। इसके अलावा विनिर्देश मेटाडेटा के लिए एक JAR संग्रह के भीतर एक मानक स्थान को परिभाषित करता है - META-INF फ़ोल्डर - और उस के भीतर कई मानक फ़ाइल नाम और प्रारूप सीधे, जिनमें से सबसे महत्वपूर्ण MANIFEST.MF फ़ाइल है। "


1

बस जांचें कि क्या aopalliance.jarफाइल में .javaफाइलों की जगह .classफाइलें हैं। यदि ऐसा है, तो बस जार फ़ाइल निकालें, इसे ग्रहण में आयात करें और ग्रहण करते समय एक जार बनाएँ। इसने मेरे लिए काम किया।


1

JAR के बारे में जानने के दौरान, मैं इस धागे के पार आया, लेकिन मेरे जैसे लोगों के लिए पर्याप्त जानकारी प्राप्त नहीं कर सका, जिनके पास .NET पृष्ठभूमि है, इसलिए मैं कुछ बिंदुओं को जोड़ने जा रहा हूं, जो .NET पृष्ठभूमि वाले व्यक्तियों की मदद कर सकते हैं।

सबसे पहले हमें JAR में इसी तरह की अवधारणा को परिभाषित करने की आवश्यकता है जो कि असेंबली और असेंबली में जावा JAR फाइलों के साथ बहुत कुछ साझा करती है।

तो, एक सभा .NET वातावरण में कोड पैकेजिंग की मूलभूत इकाई है। असेंबली स्वयं समाहित हैं और आम तौर पर संकलित कक्षाओं से मध्यवर्ती कोड होते हैं, कक्षाओं के बारे में मेटाडेटा, और पैक किए गए कोड द्वारा अपने कार्य को करने के लिए किसी भी अन्य फ़ाइलों की आवश्यकता होती है। चूंकि असेंबली कोड पैकेजिंग की मूलभूत इकाई है, इसलिए विधानसभा स्तर पर इसके साथ बातचीत करने से संबंधित कई क्रियाएं की जानी चाहिए। उदाहरण के लिए , विधानसभा स्तर पर सुरक्षा अनुमति, कोड परिनियोजन, और संस्करण देना।

जावा जार फाइलें कार्यान्वयन में सबसे अधिक अंतर होने के साथ जावा में एक समान कार्य करती हैं। असेंबलियों को आमतौर पर EXEs या DLL के रूप में संग्रहीत किया जाता है, जबकि JAR फाइलें ज़िप फ़ाइल प्रारूप में संग्रहीत की जाती हैं ।

सूचना का स्रोत -> 5- असेंबली

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.