एक ग्रहण .classpath / .project फ़ाइल में क्या है?


143

हमने हाल ही में हमारी टीम के सदस्यों में से एक के लिए एक ग्रहण परियोजना के साथ एक मुद्दा रखा था। टॉम्केट आवेदन के JARs को तैनात नहीं कर रहा था।

हमने अंततः देखा कि .classpathग्रहण फ़ाइल टीम के सदस्यों के लिए समान नहीं थी जहां परियोजना ठीक थी। हमने .classpathफ़ाइल को उस प्रोजेक्ट से एक के साथ बदल दिया जो ठीक था और टॉमकैट की तैनाती पूर्ण थी।

बस जिज्ञासा से बाहर और यह जानने के लिए कि भविष्य में क्या देखना है अगर कुछ गलत है, अंदर .classpathऔर .projectफाइलों में क्या है । मैं वहां क्या जोड़ सकता हूं, इसका क्या मतलब है?


क्या .classpath फ़ाइल जावा के लिए विशिष्ट है? यह सवाल ज्यादातर भाषा-अज्ञेयवादी लगता है, लेकिन इस जवाब से ऐसा लगता है कि यह केवल जावा के लिए प्रासंगिक है।
केसी कुबाल

जवाबों:


144

ग्रहण प्लगइन्स के लिए एक रनटाइम वातावरण है। वस्तुतः आप ग्रहण में जो कुछ भी देखते हैं, वह केवल ग्रहण के बजाय ग्रहण पर स्थापित प्लगइन्स का परिणाम है।

.projectफ़ाइल कोर ग्रहण मंच द्वारा बनाए रखा है, और अपने लक्ष्य को एक सामान्य, प्लगइन स्वतंत्र ग्रहण देखने से परियोजना का वर्णन करने के लिए है। प्रोजेक्ट का नाम क्या है? कार्यक्षेत्र की अन्य परियोजनाएँ किसके संदर्भ में हैं? प्रोजेक्ट बनाने के लिए किन बिल्डरों का उपयोग किया जाता है? (याद रखें, "बिल्ड" की अवधारणा विशेष रूप से जावा परियोजनाओं से संबंधित नहीं है, लेकिन अन्य प्रकार की परियोजनाओं के लिए भी है)

.classpathफ़ाइल ग्रहण के जेडीटी सुविधा (द्वारा किया जाता है सुविधा = प्लगइन्स का सेट)। JDT परियोजना में कई ऐसी "मेटा" फाइलें रखता है (परियोजना के .settingsअंदर निर्देशिका देखें ); .classpathफ़ाइल सिर्फ उनमें से एक है। विशेष रूप से, .classpathफ़ाइल जानकारी है जो ठीक से करने के क्रम में जेडीटी सुविधा की जरूरत है परियोजना संकलन में शामिल हैं: परियोजना के स्रोत फ़ोल्डर (वह यह है कि क्या संकलित करने के लिए); आउटपुट फ़ोल्डर (जहां संकलन करने के लिए ); और क्लासपैथ प्रविष्टियाँ (जैसे कि कार्यक्षेत्र की अन्य परियोजनाएँ, फ़ाइल सिस्टम पर JAR फ़ाइलों की मनमानी, और इसके बाद)।

ऐसी मशीनों की एक मशीन से दूसरी मशीन में ब्लाइंड कॉपी करना जोखिम भरा हो सकता है। उदाहरण के लिए, यदि मनमाने ढंग से JAR फ़ाइलों को क्लासपाथ पर रखा जाता है (यानी, JAR फाइलें जो कार्यक्षेत्र के बाहर स्थित हैं और निरपेक्ष पथ नामकरण से संदर्भित हैं), तो .classpathफ़ाइल को गैर-पोर्टेबल प्रदान किया जाता है और होने के लिए इसे संशोधित किया जाना चाहिए पोर्टेबल। .classpathफ़ाइल पोर्टेबिलिटी की गारंटी देने के लिए कुछ सर्वोत्तम प्रथाओं का पालन किया जा सकता है।


58
इस पूरी चीज़ के लिए एक बाहरी व्यक्ति के रूप में, यह सभी "ग्रहण किसी भी तरह परियोजना कार्यक्षेत्र प्रबंधन के बारे में सब कुछ करने का प्रबंधन करता है जो एक अयोग्य काली कला में बदल जाता है जो किसी के लिए भी समझना मुश्किल है"।
वॉरेन पी।

1
@ इस्साक - जिज्ञासा से बाहर, अगर मैं अपनी परियोजना का प्रबंधन करता हूं gitऔर Maven, जिसका अर्थ है कि मेरे पास (सरलता के लिए) रिपॉजिटरी (परियोजना) के "रूट" फ़ोल्डर में एक एकल srcफ़ोल्डर (एक साधारण "हैलो वर्ल्ड" .javaफ़ाइल है) और परियोजना की pox.xmlफाइल - हां, तो अगर मैं तुम्हें सही ढंग से समझ में आया, वहाँ कोई जरूरत नहीं है (या शायद जरूरी कोई जरूरत नहीं) रखने के लिए: .project, .classpathऔर .settings/फ़ाइलें / फ़ोल्डर में अच्छी तरह के रूप में gitभंडार (यानी उन्हें जोड़ने .gitignoreफ़ाइल उदाहरण के लिए)?
गाई अवराम

1
@GuyAvraham जो इस बात पर निर्भर करता है कि आप ग्रहण के साथ कैसे काम करते हैं, और विशेष रूप से - आप एक कार्यक्षेत्र को कैसे शुरू करते हैं। क्या आप एक नए कार्यक्षेत्र पर ग्रहण शुरू करते हैं, और फिर "मौजूदा मावेन परियोजनाओं को आयात करें" का उपयोग करें? यदि ऐसा है, तो आप सही हैं - इनमें से किसी भी फाइल की वास्तव में जरूरत नहीं है, जैसा m2eclipseकि आपके लिए ध्यान रखता है (या, कम से कम, यह वही है जो यह करना चाहिए)।
इसहाक

1
@ बंसिस में .projectनहीं होना चाहिए .gitignore। के बारे में .classpath- अगर आप का उपयोग m2eclipseकरें और अपने कार्यक्षेत्र स्टार्टअप पर Maven परियोजनाओं अद्यतन करने के लिए कॉन्फ़िगर किया गया है, तो आप चाहिए जोड़ने के साथ ठीक होना .classpathकरने के लिए .gitignore, लेकिन मैं इसे अपने आप परीक्षण नहीं किया।
इसहाक

1
@buncis ने उस अंतिम टिप्पणी को ठीक किया। जाहिर है, M2E आजकल परियोजनाओं को कॉन्फ़िगर करने के लिए एक बहुत अच्छा काम करता है। मैंने हाल ही में सभी प्रकार के लगभग 150 जावा प्रोजेक्ट्स के कोडबेस पर काम किया। मैंने उन सभी को हटाया .projectऔर .classpathजोड़ा .gitignore। सभी अच्छी तरह से काम करता है और मुझे इन फ़ाइलों को बहुत बार Git में अपडेट करने की आवश्यकता नहीं है।
इसहाक

37

.project

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

.classpath

Classpath निर्दिष्ट करता है कि कौन से जावा स्रोत फ़ाइलें और एक परियोजना में संसाधन फ़ाइलें जावा बिल्डर द्वारा माना जाता है और निर्दिष्ट करता है कि परियोजना के बाहर के प्रकार कैसे खोजें। जावा बिल्डर जावा स्रोत फ़ाइलों को आउटपुट फ़ोल्डर में संकलित करता है और इसमें संसाधनों को भी कॉपी करता है।


11

उल्लिखित फाइलों के लिए पूरा संदर्भ उपलब्ध नहीं है, क्योंकि वे विभिन्न प्लग-इन द्वारा एक्स्टेंसिबल हैं।

मूल रूप से, .project फ़ाइलें प्रोजेक्ट-सेटिंग्स, जैसे बिल्डर और प्रोजेक्ट प्रकृति सेटिंग्स, जबकि .classpath फ़ाइलें रनिंग के दौरान उपयोग करने के लिए क्लासपैथ को परिभाषित करती हैं। Classpath फ़ाइलों में src और लक्ष्य प्रविष्टियाँ होती हैं जो प्रोजेक्ट में फ़ोल्डर्स के साथ मेल खाती हैं; con प्रविष्टियों का उपयोग कुछ प्रकार की "वर्चुअल" प्रविष्टियों का वर्णन करने के लिए किया जाता है, जैसे कि JVM लिबास या ग्रहण प्लग-इन निर्भरता के मामले में (सामान्य जावा प्रोजेक्ट निर्भरताएँ अलग-अलग प्रदर्शित की जाती हैं, विशेष src प्रविष्टि का उपयोग करके)।


3

इस ग्रहण दस्तावेज में .projectफाइल में मार्कअप पर विवरण है : परियोजना विवरण फ़ाइल

यह .projectफ़ाइल का वर्णन करता है:

जब कोई प्रोजेक्ट कार्यक्षेत्र में बनाया जाता है, तो एक प्रोजेक्ट विवरण फ़ाइल स्वचालित रूप से उत्पन्न होती है जो प्रोजेक्ट का वर्णन करती है। इस फाइल का उद्देश्य प्रोजेक्ट को आत्म-वर्णन करना है, ताकि किसी प्रोजेक्ट को सर्वर से ज़िप या रिलीज़ किया जा सके, उसे दूसरे कार्यक्षेत्र में सही ढंग से बनाया जा सके। इस फ़ाइल को हमेशा ".project" कहा जाता है

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