2012-08-22 17 views
46

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

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

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

सभी उत्तरों के लिए धन्यवाद!

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

+0

[जेएआर फ़ाइल प्रारूप] (http://en.wikipedia.org/wiki/JAR_ (file_format)) – mellamokb

+0

http://en.wikipedia.org/wiki/JAR_ (file_format \) – danmcardle

+2

@ ब्लू चंद्रमा: मजाकिया बात यह है कि Google मुझे यहां ले जाता है। : पी – user1036719

उत्तर

51

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

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

14

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

जाओ लाइन आदेश और निष्पादित jar tvf jarfilename.jar

42

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

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

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

+0

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

1

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

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

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

9

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

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

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

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

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

+0

प्लस 1 क्योंकि आप मानक से लिंक करते हैं –

3

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

2

JD-GUI ब्राउज़िंग और decompiling जार

0

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

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

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

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

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

5

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

0

मेरी समझ के अनुसार जार फ़ाइल ज़िप के समान है लेकिन निष्पादन योग्य फाइलें हैं।

यदि आपके पास जार में निष्पादन योग्य फ़ाइलें नहीं हैं तो यह ज़िप फ़ाइल के समान होगी, मेरा मतलब है कि क्यों जार जाना है।

चूंकि जार फ़ाइल में निष्पादन योग्य फाइलें हैं, इसलिए उन्हें आसानी से आपके कोड पर लोड किया जा सकता है और आसानी से दूसरों का उपयोग करने के लिए स्थानांतरित किया जा सकता है।

1

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

0

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

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

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.To निकालने जार फ़ाइल (खोल दो फ़ाइल) सामग्री के

jar -xvf NameOfJarFile.jar 

3.To प्रदर्शन तालिका

jar -tvf NameOfJarFile.jar 
संबंधित मुद्दे