Ubuntu में एक फ़ोल्डर के लिए CLASSPATH चर कैसे सेट करें


16

मुझे पता है कि export CLASSPATH=/usr/local/java/tools.jar:$CLASSPATHCLASSPATH में tools.jar जोड़ देगा, लेकिन मैं CLASSPATH को फ़ोल्डर सेट करना चाहता हूं

इस तरह

export CLASSPATH=/usr/local/java/lib/:$CLASSPATH

लेकिन यह काम नहीं कर रहा है।

जवाबों:


11

सबसे पहले, सामान्य तौर पर, env var को सेट करना CLASSPATHआमतौर पर हल करने की तुलना में अधिक समस्याओं का कारण बनता है - क्योंकि सभी ऐप्प की चाहत / समान क्लासपाथ की आवश्यकता नहीं है, और अक्सर अवांछित या यहां तक ​​कि अनावश्यक जार को क्लासपाथ में शामिल किया जाता है। एक जावा ऐप में केवल न्यूनतम जार की आवश्यकता होती है, इसमें कोई अधिक नहीं, कम नहीं होना चाहिए।

जब आपके पास विशिष्ट, अलग-अलग ऐप होते हैं, तो यह आवश्यक होता है कि क्लासपैथ सेट किया जाए, तो आमतौर पर कमांड-लाइन विकल्प पसंद किया जाता है java -cp path1:path2:...:। डेस्कटॉप आइकन इन विकल्पों को शामिल करने के लिए अपना कमांड बदल सकते हैं, या शेल स्क्रिप्ट को इन विकल्पों को शामिल करने के लिए संशोधित किया जा सकता है।

कहा जा रहा है (और जब से नियम के अपवाद हैं), तब जावा के संस्करण पर निर्भर करता है (यह java 6 या बाद में requres), आप निर्दिष्ट कर सकते हैं कि जार की एक पूरी निर्देशिका को वर्गपथ में जोड़ा जा सकता है " *" एक निर्देशिका के अंत में; उदाहरण के लिए, निम्नलिखित:

 /dir1/foo.jar:/dir2/dir3:/dir5/dir6/*:etc...

माध्यम:

  • /dir1/foo.jar - (एकल जार) को क्लासपाथ में जोड़ा जाएगा;
  • /dir2/dir3- इस निर्देशिका में सभी अन-जारल क्लासेस को क्लासपाथ में जोड़ा जाएगा (उचित पैकेज संरचना में होना चाहिए; उदाहरण के लिए, इसमें com.my.Foo.classहोना चाहिए /dir2/dir3/com/my/Foo.class)
  • /dir5/dir6/*- इस निर्देशिका में सभी जार (यानी, /dir5/dir6/*.jar) को क्लासपाथ में जोड़ा जाएगा। ध्यान दें कि यह " *" वाइल्डकार्ड नहीं है (आप उपयोग f*.jarया यहां तक ​​कि नहीं कर सकते हैं *.jar); यह "सभी जार जोड़ने" का एक विशेष चरित्र है

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


यह ubuntu 12.04 में इसे जानने के लिए मुझे 5 घंटे से अधिक समय लगता है। आपके द्वारा फ़ाइल संकलित करने और कक्षा चलाने के बाद, दो चीजें महत्वपूर्ण हैं। 1. आप अपनी कक्षा में पैकेज का उपयोग करते हैं या नहीं। और आपको पैकेज पैरेंट फ़ोल्डर में "जावा-सीपीपी। क्लासनेम" का उपयोग करने की आवश्यकता है। 2. आपको "java -cp:" / usr / lib / jvm / java-1.6.0-openjdk-i386 / jre / lib / *: / dir2 / jarbib / * "का उपयोग करना चाहिए।"
झिहंग

@ ज़ीहोंग को आपको नेटबीन्स की तरह एक आईडीई का उपयोग करने पर विचार करना चाहिए, जिससे यह उपयोग में आने वाले उपकरण को स्थगित कर सकता है, जो वास्तव में आपके क्लासपैथ को कॉन्फ़िगर करता है। नेटबीन्स में, मावेन या ग्रेडल (या चींटी - का उपयोग करके एक नया प्रोजेक्ट स्थापित करें - लेकिन यह निर्भरता से निपटने पर बहुत जटिल हो जाता है (यह भी देखें: मावेन चींटी कार्य, जिसे मैं आइवी पसंद करता हूं)। ग्रैडल वर्तमान में 'हॉट' चीज है, fwiw; आपको इसके लिए प्रयास करना चाहिए। इसके अलावा, (1) आपको हमेशा पैकेज नामों का उपयोग करना चाहिए; और (2) वर्गमंथन में jvm निर्देशिका में कक्षाएं शामिल करने की आवश्यकता नहीं है; वे पहले से ही "बूट" क्लासपाथ में हैं।
माइकल

तुम्हारे सुझाव के लिए धन्यवाद। असल में, मैं ग्रहण का उपयोग करता हूं, और कोड वहां सही ढंग से चलता है, लेकिन जब मैंने इसे टर्मिनल में चलाया, तो "क्लासनॉटफ़ाउंड एक्ससेप्शन" मिला। मैंने बाहरी परिवाद / जार को जोड़ने के कई तरीके आजमाए, लेकिन सभी विफल रहे। अंत में, यह कमांड लाइन में jvm डायरेक्टरी और एक्सटर्नल लीब / जार को शामिल करके काम करता है। लेकिन, मैंने आज कोशिश की, आप सही हैं, जेवीएम निर्देशिका की आवश्यकता नहीं है।
झिहंग

2

यदि आप कक्षापथ को स्थायी रूप से सेट करना चाहते हैं, तो 1) पता लगाएं कि जावा कहाँ स्थापित है .. आप "कहाँ जावा" ओपनजेडक -7 / 6 / usr / lib / jvm / ..... का उपयोग कर सकते हैं

2) हमें / etc / वातावरण में CLASSPATH स्थापित करने की आवश्यकता है

  sudo gedit /etc/environment

3) निम्नलिखित पसंद जोड़ें .. (किसी भी स्थान को छोड़ दें जहां टाइप करें) (अपने जावा संस्करण और स्थापना के अनुसार अनुकूलित करें) (यह घर का रास्ता खुले jdk 7 के लिए है)

   JAVA_HOME="/usr/lib/jvm/java-7-openjdk-i386/bin"

   export JAVA_HOME

   CLASSPATH=".:/usr/lib/jvm/java-7-openjdk-i386/lib:/home/laptop/Desktop/a2"

   export CLASSPATH

":" द्वारा अलग निर्देशिका


हर कोई अपने वर्गपथ में "{JAVA_HOME} / lib" क्यों जोड़ रहा है? यह आवश्यक नहीं है, या एक अच्छा विचार भी है। उस मामले के लिए, env CLASSPATH को सेट करना भी एक बुरा विचार है, जब तक कि यह एक शेल स्क्रिप्ट में नहीं है, बस उस स्क्रिप्ट के लिए, जिस स्थिति में, कमांड-लाइन विकल्प "-cp" से जावा में अभी भी बेहतर होगा।
माइकल

0

खुला टर्मिनल और प्रकार

सूडो नैनो ~ / .bashrc

वे सभी निर्यात जोड़ें जिनकी आपको आवश्यकता है ...

निर्यात JAVA_HOME = / usr / स्थानीय / जावा / jdk1.6.0_06 (आपका पथ)

ANT_HOME = / opt / ant / apache-ant-1.9.4 निर्यात करें

अंत में प्रभावी होने के लिए टर्मिनल को फिर से शुरू करें

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