2012-04-12 17 views
16

का उपयोग कर .jar फ़ाइल कैसे बनाएं I मैक टर्मिनल का उपयोग कर .jar फ़ाइल बनाने की कोशिश कर रहा हूं लेकिन मुझे कुछ परेशानी हो रही है। मैंने here चरणों का पालन किया लेकिन असफल रहा। मुझे यह त्रुटि संदेश मिला:टर्मिनल

Failed to load Main-Class manifest attribute from 
aclient.jar 

तो आप इसे करने के लिए वास्तव में कैसे जाते हैं? मेरे जावा कार्यक्रम को Main.java कहा जाता है और मैंने इसे एक .class फ़ाइल में संकलित किया है। अब मैं क्या करूं?

धन्यवाद

उत्तर

40

1) सुनिश्चित करें कि सभी आवश्यक फ़ाइलें कर रहे हैं निर्देशिका के भीतर, आप एक टर्मिनल/कमांड प्रॉम्प्ट खोला है और उस निर्देशिका पर भेज दिया है।

2)

javac HelloWorld.java 

3 के साथ, जावा वर्ग संकलित उदाहरण HelloWorld.java के लिए) यह एक .class JAR फ़ाइल के लिए आवश्यक फ़ाइल का उत्पादन करेगा।

4) अगला मालसूची फ़ाइल (विस्तार .txt) का उपयोग करते हुए पाठ संपादक और इनपुट का उपयोग कर बचाया निम्नलिखित

Main-Class: HelloWorld 

या जो कुछ भी अपनी फ़ाइल का नाम है बनाएँ।

jar cfm HelloWorld.jar Manifest.txt HelloWorld.class 

6) फ़ाइल चलाएँ::

java -jar HelloWorld.jar 

कुछ भी स्पष्ट नहीं लगता है, तो इन वेबसाइटों से परामर्श: creating a jar file और setting an applications entry point

5) अगला JAR फ़ाइल इस कोड का उपयोग पैदा करते हैं।

उम्मीद है कि यह दूसरों की मदद करता है, चीयर्स टॉम!

संपादित करें:

इंगा की टिप्पणी के बाद यह ध्यान देने योग्य है कि आदेश जार में एक से अधिक फ़ाइलों को शामिल करने में आप का उपयोग करने की आवश्यकता है लायक है: द्वारा

jar cfm HelloWorld.jar Manifest.txt *.class 
+0

के आधार पर क्यों काम नहीं करता है धन्यवाद ! मुझे आपके निर्देशों के बाद कुछ परेशानी मिली क्योंकि मेरे पास मेरी परियोजना में कई जावा फाइलें हैं। सबसे पहले मैंने सोचा कि मुझे केवल अपनी मुख्य कक्षा को संकलित करने की आवश्यकता है, लेकिन यदि आपके पास कई जावा फाइलें हैं, तो आपको उन्हें "javac HelloWorld.java" के बजाय सभी को संकलित करना होगा, आपको "javac * .java" और "jar cfm" करना होगा HelloWorld.jar Manifest.txt HelloWorld.class "होगा" jar cfm HelloWorld.jar Manifest.txt * .class "। फिर भी आपको केवल मेन क्लास फ़ाइल में मुख्य श्रेणी बताना होगा। उम्मीद है कि अगर कोई वही गलती कर रहा है तो यह मदद करता है। – inga

+1

@inga मैंने अपनी टिप्पणियां शामिल करने के लिए मेरा जवाब अपडेट कर दिया है। जानकारी के लिए धन्यवाद! – Katana24

2

आप एक पाठ फ़ाइल है कि मुख्य वर्ग की परिभाषा की आवश्यकता है। उदाहरण के लिए:

% cat MyMain 
Main-Class: HelloWorld 

तो

%jar cvfm foo.jar MyMain *.class 
%java -jar foo.jar 
Hello world 

देखें: http://java.sun.com/j2se/1.4.2/runtime.html#example

+0

मैं अपने लिंक का पालन किया और एक सरल उदाहरण बनाया। टेक्स्ट फ़ाइल के लिए सामग्री केवल मुख्य श्रेणी है: हैलोवर्ल्ड या वहां कुछ और टेक्स्ट होना चाहिए। इसे .txt फ़ाइल या .mf या कुछ के साथ भी सहेजा जाना चाहिए? – Katana24

+1

Btw मैं अभी भी मुख्य-क्लास प्रकट त्रुटि लोआ करने में विफल हो रही आपकी सलाह का पालन करने के बाद भी:/ – Katana24

+0

कोशिश% जार xvf foo.jar बनाया: META-INF/ फुलाया: META-INF/MANIFEST.MF फुलाया: HelloWorld.class और फिर MANIFESTMF को देखें, इसे मैनिफेस्ट-वर्जन की तरह दिखना चाहिए: 1.0 निर्मित-द्वारा: 1.6.0_31 (ऐप्पल इंक) मुख्य श्रेणी: हैलोवर्ल्ड –

3

हो सकता है कि इस

javac *.java 

पीछा reifest Manifest.txt फ़ाइल में मदद करेगा:

चेतावनी: टेक्स्ट फ़ाइल को नी के साथ समाप्त होना चाहिए डब्ल्यू लाइन या कैरिज रिटर्न। आखिरी पंक्ति को ठीक से पार्स नहीं किया जाएगा यदि यह एक नई लाइन या कैरिज रिटर्न के साथ समाप्त नहीं होता है।

4

हां, हमें कक्षा के नाम के अंत में नई लाइन का उपयोग करने की आवश्यकता है ...यह मेरे लिए काम किया

अर्थात मुख्य-क्लास: HelloWorld

It will look like this in Notepad++ 
1.Main-Class: HelloWorld 
2.