2012-02-17 20 views
8

मैं समझने की कोशिश कर रहा हूं कि क्लासपाथ वास्तव में कैसे काम करता है। वेब के आसपास खोज करने के बाद इस जहां मैं अब तक पहुँच चुके है:जावा क्लासपाथ - लिनक्स

मैं /etc/environment पर

export CLASSPATH="/home/foo:/home/foo/Java_code/my_code" 

जोड़ लिया है। मैं रास्ते से उबंटू चला रहा हूँ।

जावा बिना किसी समस्या के पथ और संकलन पाता है।

समस्या यह है कि यदि मैं क्लास्स्पैट बदलता हूं और फिर मैं करता हूं: source /etc/environment, नया क्लासस्पैट लागू नहीं होता है। यह लागू होता है अगर केवल अगर मैं सिस्टम को पुनरारंभ करता हूं। उदाहरण के लिए अगर मैं

export CLASSPATH="/home/foo:/home/foo/Java_code/my_code" 

लाइन को हटाना, तो मैं स्रोत/etc/पर्यावरण करते हैं और मैं अंत में echo $CLASSPATH करते हैं, मैं क्या मिलेगा /home/foo:/home/foo/Java_code/my_code है। मुझे लगता है मुझे एक खाली रेखा मिलनी चाहिए, है ना?

क्या सिस्टम को पुनरारंभ किए बिना तुरंत पैथ या क्लास्स्पैट चर में परिवर्तन लागू करने का कोई तरीका है?

यह मदद कर सकता है आप जानते हैं कि/etc/पर्यावरण फ़ाइल मूल रूप से केवल निम्न पंक्ति का समावेश है:

PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games" 

अपने समय के लिए धन्यवाद।

+0

आप कक्षापथ को कैसे हटा रहे हैं? –

+0

आप यह सब क्यों करते हैं, आपका पर्यावरण क्या है?/etc/पर्यावरण का प्रयोग ग्राफिकल अनुप्रयोगों के लिए पर्यावरण चर को परिभाषित करने के लिए किया जाता है। यदि आपके पास ग्राफिक्स हैं, तो आप आईडीई का उपयोग कर सकते हैं। क्लासपाथ में अपने घर फ़ोल्डर + परियोजनाओं सहित सभी परेशानी क्यों करें? – hovanessyan

+0

मैं विशिष्ट फ़ोल्डर्स से संकुल आयात करने के लिए स्थायी रूप से क्लासस्पैट सेट करने की कोशिश कर रहा हूं, जब भी मैं इसे javac चलाता हूं। – tomatoeggs

उत्तर

5

मुझे लगता है कि आपको किसी भी पथ को एक सिस्टम व्यापक फ़ाइल में अपने घर निर्देशिका में स्थानीय नहीं रखना चाहिए। मैं /etc/environment अकेले अकेले छोड़ दूंगा, जब तक कि आप कुछ बदलाव न दें, जो सभी उपयोगकर्ताओं के लिए आवश्यक या फायदेमंद हैं। अपनी होम निर्देशिका में अपने .bashrc में क्लासस्पैट में कोई भी परिवर्तन रखें।

CLASSPATH=$CLASSPATH:/home/foo:/home/foo/Java_code/my_code 
    export CLASSPATH 

इस तरह आप इसे स्रोत कर सकते हैं और किसी भी नए स्टार्ट बैश में सेटिंग्स एक ही बार में होंगी।

+1

यह ठीक काम करता है। अब सबकुछ चिकना लगता है। आपके सहयोग के लिए धन्यवाद। – tomatoeggs

2

आप

export CLASSPATH="/home/foo:/home/foo/Java_code/my_code" 

लाइन निकालें और फिर source ... यह CLASSPATH को दूर नहीं करते, क्योंकि यह पहले से ही स्थापित किया गया है है। यह उन चरों को साफ़ नहीं करता है जिन्हें पहले ही परिभाषित किया गया है।

+0

तो नया क्लासस्पैट लागू करने के लिए मेरे सिस्टम को पुनरारंभ करना एकमात्र तरीका है? – tomatoeggs

+0

आप प्रत्येक बार लॉगिन करते समय चर सेट करने के लिए अपने '~' डायरेक्टॉय में अपनी '.bashrc' फ़ाइल में' निर्यात CLASSPATH = "/ home/foo:/home/foo/Java_code/my_code" ' डाल सकते हैं। क्लास्स्पैट वैरिएबल को अनसेट करने के लिए, 'क्लासस्पैट' को अनसेट करें –

+0

धन्यवाद सपन। आपकी टिप्पणियों ने वास्तव में मेरी मदद की। सबकुछ अब चिकना है। – tomatoeggs

1

/etc/environment फ़ाइल सामान्य शेल स्क्रिप्ट नहीं है; जब आप अपने सिस्टम में बूट या लॉगिन करते हैं तो इसे शेल स्क्रिप्ट के रूप में निष्पादित नहीं किया जाता है। तो source /etc/environment के साथ इसे चलाने के समान नहीं है जब आप आमतौर पर अपने सिस्टम को बूट करते हैं।

देखें: Ubuntu environment variables

/etc/environment - इस फ़ाइल में विशेष रूप से सिस्टम-वाइड वातावरण चर सेटिंग के लिए है। यह एक स्क्रिप्ट फ़ाइल नहीं है, बल्कि प्रति पंक्ति एक असाइनमेंट अभिव्यक्तियों के होते हैं। विशेष रूप से, यह फ़ाइल सिस्टम-व्यापी लोकेल और पथ सेटिंग्स को संग्रहीत करती है।

+0

धन्यवाद जेस्पर। आपकी जानकारी वास्तव में मूल्यवान हैं। – tomatoeggs

4
export CLASSPATH="" 

या बेहतर

unset CLASSPATH 

एक मौजूदा क्लासपाथ को नष्ट करेगा। ऐसे कई स्थान हैं जहां आप क्लासपाथ सेट या सेट कर सकते हैं - एक लापता प्रविष्टि इसे अनसेट नहीं करेगा।

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