2010-01-29 12 views
16

-classpathjava के साथ विकल्प का उपयोग, CLASSPATH एनवी परिवर्तक की सामग्री को जोड़ें या बदलें?जावा-क्लासपाथ विकल्प

+3

अच्छा सवाल। मैंने कभी इसके बारे में सोचा नहीं है – marionmaiden

+1

क्या आप जानना चाहते हैं कि पर्यावरण चर बदल गया है या नहीं? क्या आपने वास्तव में * देखने के लिए एक परीक्षण चलाया * अगर यह बदल गया? –

+0

इसे अपने आप क्यों न करें? –

उत्तर

14

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

+1

बिल्कुल सही। एक संक्षिप्त उत्तर के लिए धन्यवाद girienie। आपको जावा विशेषज्ञ होना चाहिए :) – Zacky112

+0

@ जैक 112: बहुत महत्वपूर्ण सवाल .. धन्यवाद :) – giri

5

हां। java(1) आदमी पेज से उद्धरित:

-classpath classpath 
    -cp classpath 
      Specifies a list of directories, JAR archives, and ZIP archives to search for class files. Class 
      path entries are separated by colons (:). Specifying -classpath or -cp overrides any setting of the 
      CLASSPATH environment variable. 

      If -classpath and -cp are not used and CLASSPATH is not set, the user class path consists of the cur- 
      rent directory (.). 
+2

इस के अनुसार पर्यावरण चर * नहीं * अपडेट किया गया है। मैं नहीं देखता कि जवाब "हां" कैसे है। –

+2

@ एसएलॉट - किसके दृष्टिकोण से? * प्रोग्राम के * बिंदु से क्लासस्पैट मान (यदि यह मौजूद है) को प्रतिस्थापित किया गया है। * खोल के * बिंदु से क्लासस्पैट मान परिवर्तित नहीं होता है। मुझे लगता है कि मूल सवाल सिर्फ बुरी तरह से लिखा गया था। – Nate

6

या तो विकल्पों में से एक प्रयोग किया जाता है, दोनों नहीं।

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

...

-classpath विकल्प पसंद किया जाता है आप अन्य अनुप्रयोगों को प्रभावित किए बिना और अन्य अनुप्रयोगों के अपने मूल्य को संशोधित किए बिना प्रत्येक आवेदन के लिए व्यक्तिगत रूप से सेट कर सकते हैं क्योंकि।

...

CLASSPATH चर सेट करने या -classpath कमांड लाइन विकल्प का उपयोग कर, कि डिफ़ॉल्ट को ओवरराइड इसलिए यदि आप खोज पथ में वर्तमान निर्देशिका शामिल करना चाहते हैं, तो आप में शामिल करना चाहिए " । " नई सेटिंग्स में।

6

-cp विकल्प का उपयोग क्लासस्पैट पर्यावरण चर को प्रभावित नहीं करेगा।

आप इस जांच करने के लिए इस छोटे से कोड स्निपेट की कोशिश कर सकते हैं:

public class CPTest { 
    public static void main (final String[] args) { 
     String cp = System.getenv("CLASSPATH"); 
     System.out.println(cp); 
    } 
} 
%echo $CLASSPATH 
/home/test/:. 

-cp विकल्प के बिना उत्पादन:

%java CPTest 
/home/test/:. 

-cp विकल्प के साथ उत्पादन:

%java -cp /home/xanadu:. CPTest 
/home/test/:. 

आउटपुट दोनों आमंत्रणों के लिए समान है (एक के साथ -सीपी और एक बिना)।

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

यह नीचे दिए गए आमंत्रण से स्पष्ट है। CWD (वर्तमान कार्यशील निर्देशिका "।")
-cp विकल्प से बाहर रखा गया है, तो JVM लांचर (यानी जावा)
वर्ग फ़ाइल CLASSPATH पर्यावरण CWD युक्त चर के बावजूद नहीं मिल सकता है ("।") इस में।

%java -cp /home/test CPTest 
Exception in thread "main" java.lang.NoClassDefFoundError: CPTest 
संबंधित मुद्दे