2009-01-20 11 views
109

मैंने सूर्य के लिए जेएआर फाइलों पर जावा ट्यूटोरियल पढ़ा, लेकिन मुझे अभी भी मेरी समस्या का हल नहीं मिल रहा है। मुझे jtwitter.jar नामक एक जार फ़ाइल से कक्षा का उपयोग करने की ज़रूरत है, मैंने फ़ाइल डाउनलोड की है, और इसे निष्पादित करने का प्रयास किया है (मुझे कल पता चला कि .jar फ़ाइलों को डबल क्लिक करके निष्पादित किया जा सकता है) और Vista ने मुझे एक त्रुटि दी " [Path] /jtwitter.jar से मुख्य-श्रेणी मैनिफेस्ट विशेषता लोड करने में विफल "।.jar फ़ाइलों से कक्षाओं का उपयोग कैसे करें?

जिस व्यक्ति ने .jar फ़ाइल को कोड किया है, वह मुझे आयात करना चाहता है, लेकिन मैं अपने कोड में आयात करने के लिए .jar फ़ाइल कहां स्टोर करूं? मैंने एक ही निर्देशिका में .jar फ़ाइल और मेरी .java फ़ाइल दोनों डालने का प्रयास किया, काम नहीं किया।

फ़ाइल मैं के लिए काम करने के लिए कोशिश कर रहा हूँ यहाँ है: http://www.winterwell.com/software/jtwitter.php

मैं JCreator ले उपयोग कर रहा हूँ।

+13

एक डाउनवोट क्यों है? मेरी राय में, यह एक अच्छा सवाल है और उत्तर में दिलचस्प जानकारी है! (+1) – guerda

उत्तर

26

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

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

import org.xml.sax.SAXException; 

यदि आप आईडीई पर काम कर रहे हैं, तो आपको इसके दस्तावेज़ों का संदर्भ लेना चाहिए। या कम से कम निर्दिष्ट करें कि आप इस धागे में किस का उपयोग कर रहे हैं। यह निश्चित रूप से हमें आपकी मदद करने में सक्षम बनाता है।

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

java -jar my_program.jar 

आप अपने jar में एक META-INF/MANIFEST.MF फ़ाइल होनी चाहिए। कैसे करें के लिए here देखें।

5

आपको कोड को संकलित/चलाने के दौरान .jar फ़ाइल को अपने क्लासपाथ में रखना होगा। फिर आप .jar में कक्षाओं के मानक आयात का उपयोग करते हैं।

6

कार्यकर्ता 3 कहता है, आपको अपने क्लासपाथ में जार फ़ाइल की आवश्यकता है। यदि आप कमांडलाइन से संकलित कर रहे हैं, तो इसका मतलब होगा- क्लासपाथ ध्वज का उपयोग करना। (क्लासस्पैट पर्यावरण परिवर्तक से बचें; यह गर्दन आईएमओ में दर्द है।)

यदि आप आईडीई का उपयोग कर रहे हैं, तो कृपया हमें बताएं कि हम कौन सी पहचान कर सकते हैं और हम उस आईडीई के लिए विशिष्ट चरणों में आपकी सहायता कर सकते हैं।

+0

क्लासपाथ एनवी वैरिएबल उपयोगी है यदि आप स्क्रिप्ट का उपयोग कर रहे हैं या अपने ऐप को चलाने के लिए firedaemon जैसे कुछ हैं। जब आप इसे वैश्विक रूप से उपयोग करते हैं तो यह केवल दर्द होता है :) – workmad3

+0

मुझे अभी भी इसे स्पष्ट रूप से देखना पसंद है। –

+0

मैं सहमत हूं, मुझे इसे स्पष्ट रूप से देखना पसंद है। – J3r3myK

10

आपको कक्षापथ में जार फ़ाइल जोड़ने की आवश्यकता है।

javac -cp .;jwitter.jar MyClass.java 
अपने कोड को चलाने के लिए

(बशर्ते MyClass एक मुख्य विधि में शामिल है कि): अपने जावा वर्ग को संकलित करने के

java -cp .;jwitter.jar MyClass 

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

142

मान लीजिए कि हम वर्ग Classname कि जार फ़ाइल org.example.jar

में निहित है उपयोग करने की आवश्यकता है और अपने स्रोत फ़ाइल mysource.java इस तरह है:

import org.example.Classname; 

public class mysource { 
    public static void main(String[] argv) { 
    ...... 
    } 
} 

पहले, जैसा कि आप देख, में आपका कोड आपको कक्षाएं आयात करना है। ऐसा करने के लिए आपको import org.example.Classname;

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

: और ; का उपयोग कर में अंतर कृपया ध्यान दें, जबकि

  • संकलन आप ऑपरेटिंग सिस्टम की तरह एक यूनिक्स के तहत कर रहे हैं:

    javac -cp '.:org.example.jar' mysource.java 
    
  • आप खिड़कियों के तहत कर रहे हैं:

    javac -cp .;org.example.jar mysource.java 
    

इस के बाद, आप बाईटकोड फ़ाइल mysource.class

अब आप इस चला सकते हैं प्राप्त: यदि आप के तहत कर रहे हैं

java -cp '.:org.example.jar' mysource 
  • :

    • आप ऑपरेटिंग सिस्टम की तरह एक यूनिक्स के तहत कर रहे हैं विंडोज़:

      java -cp .;org.example.jar mysource 
      
  • +4

    क्या आप इस नोटेशन को थोड़ा और समझा सकते हैं? यह मेरी समस्या को हल करता है, लेकिन दुर्भाग्य से मेरे पास कोई विशेष विचार नहीं है कि इस विशेष मामले में अर्धविराम/कोलन का अर्थ क्या है। – cemulate

    +1

    इस अर्धविराम/कॉलन कहानी ने मुझे पूरा दिन खर्च किया। कम से कम मुझे अब यह मिला, धन्यवाद! –

    +1

    @ChaseMeadors [अर्धविराम] (http://technet.microsoft.com/en-us/library/cc772047.aspx)/[कोलन] (http://www.gnu.org/software/bash/manual/bashref .html # अनुक्रमणिका-पथ) अनिवार्य रूप से "और" यहां है। यह 'org.example.jar' से' .' को अलग कर रहा है। – duozmo

    संबंधित मुद्दे