2010-03-07 15 views
201

मैं सिर्फ इस लाइन पढ़ रहा था:क्लासपाथ क्या है?

पहली बात प्रारूप() विधि करता

और output.vm नामित classpath से एक वेग टेम्पलेट मैं समझ नहीं सकता लोड है क्या इस संदर्भ में classpath द्वारा मतलब था।

+21

यह बड़े करीने से समझाया [जावा CLASSPATH मास्टरिंग] (http://kevinboone.net/classpath.html) निश्चित रूप से क्लासपाथ-फोबिया से पीड़ित किसी भी रोगी को डॉक्टर का स्पर्श प्रदान करता है। दिए गए उदाहरण का अभ्यास करना सभी संबंधित भ्रम को साफ़ करता है। – KNU

उत्तर

315

जब जावा में प्रोग्रामिंग, आप अन्य वर्गों वर्ग आप अपने स्रोत फ़ाइल के शीर्ष पर कुछ इस तरह रख कर लिख रहे हैं के लिए उपलब्ध बनाने: कह कर

import org.javaguy.coolframework.MyClass; 

या कभी कभी तुम 'थोक आयात' सामान :

import org.javaguy.coolframework.*; 

तो बाद में अपने कार्यक्रम में जब आप कहते हैं:

MyClass mine = new MyClass(); 

जावा वर्चुअल मशीन को पता चलेगा कि आपकी संकलित कक्षा कहां मिलें।

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

क्लासपाथ सेट करने के तरीके के बारे में बात करने से पहले, चलो क्लास फाइल, पैकेज और .jar फ़ाइलों के बारे में बात करते हैं।

सबसे पहले, मान लीजिए कि MyClass कुछ ऐसा है जो आपने अपनी प्रोजेक्ट के हिस्से के रूप में बनाया है, और यह आपकी प्रोजेक्ट में output नामक एक निर्देशिका में है। .class फ़ाइल output/org/javaguy/coolframework/MyClass.class पर होगी (उस पैकेज में हर दूसरी फ़ाइल के साथ)। उस फ़ाइल को प्राप्त करने के लिए, आपके पथ में केवल 'आउटपुट' फ़ोल्डर को शामिल करने की आवश्यकता होगी, न कि संपूर्ण पैकेज संरचना, क्योंकि आपका आयात विवरण वीएम को वह सारी जानकारी प्रदान करता है।

अब मान लीजिए कि आप कूलफ्रेमवर्क को एक .jar फ़ाइल में बंडल करते हैं, और उस CoolFramework.jar को अपनी प्रोजेक्ट में एक lib निर्देशिका में डाल दें। अब आपको अपने क्लासपाथ में lib/CoolFramework.jar डालना होगा। वीएम org/javaguy/coolframework भाग के लिए जार फ़ाइल के अंदर दिखेगा, और अपनी कक्षा पाएं।

तो, classpaths होते हैं:

  • जार फ़ाइलें, और पैकेज पदानुक्रम के शीर्ष करने के
  • पथ।

आप अपना क्लासपाथ कैसे सेट करते हैं?

हर कोई सीखने के लिए पहला तरीका पर्यावरण चर के साथ है। एक Windows मशीन आप अपने वातावरण सेटिंग पर जाना है और या तो जोड़ सकते हैं या मूल्य वहां पहले से मौजूद है संशोधित है पर

export CLASSPATH=/home/myaccount/myproject/lib/CoolFramework.jar:/home/myaccount/myproject/output/ 

: एक यूनिक्स मशीन पर, आप की तरह कुछ कह सकते हैं।

java -cp "/home/myaccount/myproject/lib/CoolFramework.jar:/home/myaccount/myproject/output/" MyMainClass 

इस तीसरे रास्ते पर एक प्रकार अक्सर एक .sh या .bat फ़ाइल कि classpath की गणना करता है साथ किया जाता है और:

दूसरा तरीका है जब, जावा शुरू कर इस तरह -cp पैरामीटर का उपयोग करने के लिए है इसे -cp पैरामीटर के माध्यम से जावा में पास करता है।

तो ऐसा करने का सबसे अच्छा तरीका क्या है?

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

-cp जाने का रास्ता है। मैं आम तौर पर सुनिश्चित करता हूं कि मेरा क्लासस्पैट पर्यावरण परिवर्तक एक खाली स्ट्रिंग है जहां मैं संभव हो, विकसित करता हूं, ताकि मैं वैश्विक क्लासपाथ मुद्दों से बच सकूं (हालांकि कुछ क्लासफास्ट खुश नहीं हैं जब वैश्विक क्लासपाथ खाली है - मुझे दो आम, मेगा-हज़ार डॉलर लाइसेंस प्राप्त जे 2 ईई और जावा सर्वर जिनके पास उनके कमांड लाइन उपकरण के साथ इस प्रकार का मुद्दा है)।

+4

एक और अच्छी तरह से समझाया गया ब्लॉग [जावा में पथ और क्लासस्पैट क्या है - पथ बनाम कक्षापैथ] (http://java67.blogspot.in/2012/08/what-is-path-and-classpath-in-java-difference। एचटीएमएल) – KNU

+2

Awsome स्पष्टीकरण !! –

+0

पायथन में लिब नामक एक फ़ोल्डर है जहां आप किसी भी समय सामान्य आयात विवरण के साथ किसी भी मॉड्यूल को स्टोर करने के लिए स्टोर कर सकते हैं। क्या यह क्लासस्पैट पर्यावरण परिवर्तक को तृतीय-पक्ष जावा पैकेज के लिए निर्देशिका में सेट करने से अलग है? भले ही यह वैश्विक होगा, फिर भी अधिक पैकेज जोड़ने के अलावा, परिवर्तनीय को बदलने की आवश्यकता नहीं होगी। –

3

इस संदर्भ में क्लासपाथ सामान्य संदर्भ में बिल्कुल सही है: कहीं भी वीएम जानता है कि यह वर्गों को लोड किया जा सकता है, और संसाधन भी (जैसे आपके मामले में output.vm)।

मुझे समझ में आता है कि वेग "आउटपुट" में कहीं भी output.vm नाम की फ़ाइल ढूंढने की अपेक्षा करता है। यह एक जार, नियमित फ़ोल्डर, ... अनुप्रयोग के क्लासपाथ में किसी भी स्थान की जड़ हो सकती है।

7

क्लासपाथ वह मार्ग है जहां जावा वर्चुअल मशीन जावा प्रोग्राम में उपयोगकर्ता परिभाषित कक्षाओं, संकुलों और संसाधनों की तलाश करती है।

इस संदर्भ में, format() विधि इस पथ से एक टेम्पलेट फ़ाइल लोड करें।

35

इसे पैथ पर्यावरण चर के जावा के उत्तर के रूप में सोचें - ओएसएएस पाथ पर EXEs की खोज करता है, जावा क्लासपाथ पर कक्षाओं और संकुलों की खोज करता है।

वसंत-एस्क्यू प्रश्न की तरह भी।

-1

क्लासपाथ और पथ evironment चर हैं। आम तौर पर, आपको jdk/bin को पथ में रखना होगा ताकि आप हर जगह जावा कंपाइलर का उपयोग कर सकें, क्लासपाथ आपकी .class फ़ाइलों का पथ है। क्लासपाथ में एक डिफ़ॉल्ट पथ होता है (।) जिसका अर्थ वर्तमान निर्देशिका है। लेकिन जब आप पैकेज का इस्तेमाल करते थे। आप या तो .class फ़ाइल का पूरा पथ निर्दिष्ट करेंगे या क्लासपाथ में .class फ़ाइल पथ डाल देंगे जो बहुत सारे कामों को बचाएगा!

1

क्लासपाथ सिस्टम का एक पर्यावरण चर है। इस चर की सेटिंग जावा कंपाइलर को किसी भी पैकेज पदानुक्रम की जड़ प्रदान करने के लिए प्रयोग की जाती है।

-1

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

CLASSPATH can be set permanently in the environment: In Windows, choose control panel ⇒ System ⇒ Advanced ⇒ Environment Variables ⇒ choose "System Variables" (for all the users) or "User Variables" (only the currently login user) ⇒ choose "Edit" (if CLASSPATH already exists) or "New" ⇒ Enter "CLASSPATH" as the variable name ⇒ Enter the required directories and JAR files (separated by semicolons) as the value (e.g., ".;c:\javaproject\classes;d:\tomcat\lib\servlet-api.jar"). Take note that you need to include the current working directory (denoted by '.') in the CLASSPATH. 

To check the current setting of the CLASSPATH, issue the following command: 

> SET CLASSPATH 

CLASSPATH can be set temporarily for that particular CMD shell session by issuing the following command: 

> SET CLASSPATH=.;c:\javaproject\classes;d:\tomcat\lib\servlet-api.jar 

Instead of using the CLASSPATH environment variable, you can also use the command-line option -classpath or -cp of the javac and java commands, for example, 

> java –classpath c:\javaproject\classes com.abc.project1.subproject2.MyClass3 
0

CLASSPATH सिस्टम चर

स्थापना वर्तमान CLASSPATH चर प्रदर्शित करने के लिए, Windows और यूनिक्स (बॉर्न शैल) में इन आदेशों का उपयोग:

CLASSPATH निम्न तरीकों में से एक में स्थापित किया जा सकता: Windows में: C:\> set CLASSPATH यूनिक्स में: % echo $CLASSPATH

CLASSPATH चर की वर्तमान सामग्री हटाने के लिए, इन आदेशों का उपयोग: +०१२३५१६४१०६Windows में: C:\> set CLASSPATH= यूनिक्स में: % unset CLASSPATH; export CLASSPATH

CLASSPATH चर सेट करने के लिए निम्न आदेश (उदाहरण के लिए) का उपयोग करें: Windows में : C:\> set CLASSPATH=C:\users\george\java\classes यूनिक्स में: % CLASSPATH=/home/george/java/classes; export CLASSPATH

+1

जबकि ये आदेश पर्यावरण चर के साथ काम करने के लिए उपयोगी हो सकते हैं, यह प्रश्न का उत्तर नहीं देता है – Hulk

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