2010-03-14 10 views
31

के क्लासपाथ और सोर्सपाथ विकल्पों के बीच मतभेद मैंने सूर्य प्रलेखन और स्टैक ओवरफ़्लो पर कई पोस्ट पढ़ीं, लेकिन मैं अभी भी जावा कंपाइलर विकल्प -cp और -sourcepath के बीच अंतरों के बारे में उलझन में हूं।जावैक

Let कहते हैं कि मैं इस निर्देशिका संरचना है:

c:\Java\project1\src (where the Java source files are) 
c:\Java\project1\bin (where the Java class files will be or already are) 

चलो भी कहते हैं कि मैं एक पैकेज com.mypackage में एक स्रोत फ़ाइल MainClass.java है, और निर्देशिका संरचना स्रोत फ़ोल्डर में ठीक है कि।

मैं Project1 निर्देशिका में हूँ और चलाएँ:

javac -d bin -sourcepath src src/com/mypackage/MainClass.java 

या

javac -d bin -classpath src src/com/mypackage/MainClass.java 

और मैं एक ही परिणाम प्राप्त करते हैं। वर्बोज़ मोड में, स्रोत फ़ाइलों के लिए खोज पथ दोनों मामलों में src है।

यह अच्छा होगा अगर कोई मुझे इन विकल्पों के विनिर्देशों को समझने में मदद कर सके। जहां अपने कोड की जड़

  • classpath संकलित करने के लिए है

  • उत्तर

    21
    -classpath classpath 
    

    क्लासस्पैट पर्यावरण चर में उपयोगकर्ता वर्ग पथ को ओवरराइड करने के लिए उपयोगकर्ता वर्ग पथ सेट करें। यदि न तो क्लासस्पैट या-क्लासपाथ निर्दिष्ट है, तो उपयोगकर्ता श्रेणी पथ में वर्तमान निर्देशिका होती है।

    यदि -सोर्सपाथ विकल्प निर्दिष्ट नहीं है, तो उपयोगकर्ता वर्ग पथ स्रोत फ़ाइलों के साथ-साथ कक्षा फ़ाइलों के लिए खोजा जाता है।

    -sourcepath sourcepath 
    

    वर्ग या इंटरफ़ेस परिभाषा के लिए खोज करने के लिए स्रोत कोड पथ निर्दिष्ट करें। उपयोगकर्ता वर्ग पथ के साथ, स्रोत पथ प्रविष्टियों को अर्धविराम (;) से अलग किया जाता है और निर्देशिका, JAR अभिलेखागार, या ज़िप अभिलेखागार हो सकते हैं। यदि पैकेज का उपयोग किया जाता है, तो निर्देशिका या संग्रह के भीतर स्थानीय पथ का नाम पैकेज नाम को प्रतिबिंबित करना चाहिए।

    ध्यान दें कि क्लासपाथ के माध्यम से प्राप्त कक्षाएं स्वचालित स्रोतों के अधीन होती हैं यदि उनके स्रोत पाए जाते हैं।

    +2

    आपके उत्तर के लिए धन्यवाद। अंतिम वाक्य वह है जिसे मैं ढूंढ रहा था: सीपी में मिली स्रोत फ़ाइलों का स्वत: पुनर्मूल्यांकन। मैंने बिन निर्देशिका में .class फ़ाइलों के संशोधन की तिथि सत्यापित की है और यह इस सिद्धांत का पालन करता है! यहां 2 विकल्पों के बीच बड़ा अंतर है। संकलन समय भी इस सुराग देता है। धन्यवाद! – Alex

    7
    • sourcepath है अपने कोड शामिल कर सकते हैं, लेकिन यह भी पुस्तकालयों की जरूरत
    +0

    आपके उत्तर के लिए धन्यवाद। – Alex

    4

    CLASSPATH संकलक और वर्ग लोडर जहां देखने के लिए कहता है .class फ़ाइलों की जरूरत है।

    सोर्सपाथ ऐसा कुछ है जिसका मैं इतना उपयोग नहीं करता हूं। मुझे विश्वास है कि यह वैकल्पिक है, क्योंकि आमतौर पर वर्तमान निर्देशिका स्रोतपथ है। क्लास्स्पैट नहीं है।

    1
    • classpath वर्ग (.class) के लिए खोज की है
    • sourcepath स्रोत (जावा) फ़ाइलों के लिए खोज की है (.a.k फ़ाइलें।एक वर्ग या इंटरफ़ेस परिभाषाओं)

    हालांकि, अगर sourcepath निर्दिष्ट नहीं है, classpath दोनों वर्ग फ़ाइलों और स्रोत फ़ाइलों के लिए खोज की है।

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

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

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