2011-11-02 15 views
6

होने के बावजूद जार फ़ाइल निष्पादित करने में असमर्थ मेरा प्रश्न पथ में जार फ़ाइलों को शामिल करने के बारे में है। इसमें 2 भाग हैं।पाथ और क्लास्स्पैट सेट

1) मैं इस जार फाइल करने के लिए weka.jar जार /home/andy/software/weka/weka.jar

पथ चर अंक में स्थित फ़ाइल निष्पादित करने के लिए कोशिश कर रहा हूँ (यानी करने के लिए/घर/एंडी/सॉफ्टवेयर /weka/weka.jar) और क्लासस्पैट भी करता है।

हालांकि जब मैं जावा -jar weka.jar का उपयोग कर जार चलाने की कोशिश करता हूं, तो मुझे एक त्रुटि मिलती है "jarfile weka.jar तक पहुंचने में असमर्थ"।

कोई विचार क्या चल रहा है? मैं उबंटू लिनक्स पर हूं। मैंने एसओ में चारों ओर देखा और ऐसा लगता है कि मैं कुछ भी नहीं कर रहा हूं जो स्पष्ट रूप से गलत है (क्योंकि पाथ और क्लास्स्पैट दोनों सही ढंग से सेट होने लगते हैं)।

2) मैं अपनी सभी जार फ़ाइलों को एक निर्देशिका में डाल सकता हूं और उस पथ को अपने पथ में शामिल कर सकता हूं (प्रत्येक जार को व्यक्तिगत रूप से शामिल करने के बजाय)। मैं उसे कैसे कर सकता हूँ?

अग्रिम धन्यवाद।

संपादित करें 1 -> यहाँ मेरी कमांड लाइन है

[email protected]:~$ export CLASSPATH=$CLASSPATH:/home/andy/research/software/weka/weka.jar 
[email protected]:~$ echo $CLASSPATH 
:/home/andy/research/software/weka/weka.jar 
[email protected]:~$ java -jar weka.jar 
Unable to access jarfile weka.jar 
[email protected]:~$ java weka.jar 
Exception in thread "main" java.lang.NoClassDefFoundError: weka/jar 
Caused by: java.lang.ClassNotFoundException: weka.jar 
at java.net.URLClassLoader$1.run(URLClassLoader.java:202) 
at java.security.AccessController.doPrivileged(Native Method) 
at java.net.URLClassLoader.findClass(URLClassLoader.java:190) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:307) 
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:248) 
Could not find the main class: weka.jar. Program will exit. 
[email protected]:~$ 

संपादित करें 2 -> मैं '//घर/एंडी/अनुसंधान/सॉफ्टवेयर/Weka' निर्देशिका को इंगित करने के लिए और अभी भी 'करने में असमर्थ मिल पथ चर बदल एक्सेस जारफाइल त्रुटि '

+0

'~' के बजाय '$ HOME' का उपयोग करने का प्रयास करें? –

+0

वास्तव में मैंने पूर्ण पथ का उपयोग किया है: /home/andy/software/weka/weka.jar। उसके लिए माफ़ करना। – user721975

+1

-jar का मतलब है कि क्लासपाथ को – micfra

उत्तर

1

जब जार कक्षा में है तो इसका मतलब है कि पुस्तकालय जेवीएम के लिए उपलब्ध है। जब आप एक जार फ़ाइल (इसे मुख्य रूप से निष्पादित करें) चलाने के लिए चाहते हैं, तो आपको अभी भी फ़ाइल के लिए एक वैध पथ प्रदान करने की आवश्यकता है।

+1

क्षमा करें, मुझे समझ में नहीं आ रहा है, "जार नामक पैकेज पैकेज के अंदर, वका नामक पैकेज खोजने की कोशिश कर रहा है।" फिर क्लासपाथ में इसे जोड़ने का क्या मतलब है अगर हर बार मुझे पूरा रास्ता प्रदान करने की ज़रूरत है। – user721975

9

1) - जावा का विकल्प विकल्प क्लासस्पैट के उपयोग को अक्षम करता है। कृपया Setting the CLASSPATH of Weka

2) पर एक नज़र डालें कक्षा पथ प्रविष्टियों basename वाइल्डकार्ड वर्ण , जो विस्तार .jar या .JAR साथ निर्देशिका में सभी फ़ाइलों की एक सूची निर्दिष्ट करने के समकक्ष माना जाता हो सकते हैं। उदाहरण के लिए, कक्षा पथ प्रविष्टि foo/ foo नामक निर्देशिका में सभी JAR फ़ाइलों को निर्दिष्ट करता है। एक क्लासपाथ प्रविष्टि जिसमें बस * शामिल है, वर्तमान निर्देशिका में सभी जार फ़ाइलों की एक सूची में फैली हुई है। Setting the class path|Understanding class path wildcards

+0

जब मैं इसे बिना किसी रन के चलाता हूं, तो यह मुझे "थ्रेड में अपवाद" मुख्य "java.lang.NoClassDefFoundError: Weka/jar" अपवाद देता है। – user721975

+0

कृपया अपना प्रश्न संपादित करें अपना क्लासस्पैट और अपनी कमांड लाइन जोड़ना। क्या आपने इसे ऊपर पोस्ट किए गए वीका विकी के लिंक से तुलना की है? – micfra

+0

हां मैंने किया। मैं 'जावा-सीपी $ सीपी -Xmx500m weka.gui.explorer.Explorer' का उपयोग करके वेका का आह्वान करने में सक्षम था, लेकिन मैं वास्तव में जार फ़ाइल को सीधे निष्पादित करने में सक्षम होना चाहता हूं (जावा वीका.जर) क्योंकि मैं निष्पादन का एक सामान्य तरीका चाहता हूं पथ में उन्हें शामिल करके जार फाइलें। मैंने आपके द्वारा सुझाए गए प्रश्न को भी अपडेट किया है। धन्यवाद। – user721975

1

* .jar का उपयोग करने में असमर्थ है कि जावा को यह जार फ़ाइल नहीं मिल रही है। आपको या तो फ़ोल्डर से यह आदेश (जावा -jar weka.jar) चलाया जाना चाहिए जहां आपका जार स्थित है, या अपने पैथ चर को सही करें। यह उस फ़ोल्डर को इंगित करना चाहिए जहां जार रखा गया है, जार फ़ाइल सीधे नहीं।

+0

वैसे यह बात है। मैं हर समय फ़ोल्डर में नहीं रहना चाहता हूं और अभी भी जार फ़ाइल चलाने में सक्षम होना चाहता हूं। पैथ चर वास्तव में निर्देशिका '/ home/andy/research/software/weka /' को इंगित कर रहा है। – user721975

+0

@ user721975 ठीक है तो आप केवल 'जावा -jar/my/path/to/jar' क्यों नहीं चला सकते? मुझे लगता है कि यह वैसे भी सबसे अच्छा विचार नहीं है - अपने एक विशेष जार का स्थान सिस्टम 'पथ' चर में डाल देना – javagirl

3

आप के रूप

java -jar weka.jar 

इसके बजाय आप जार के अंदर वर्गों में से एक का नाम देने पर अमल नहीं करते।

की स्थापना classpath के बिना एक सरल उदाहरण:

java -jar /home/andy/research/software/weka/weka.jar weka.core.SystemInfo 

एक साधारण उदाहरण के सेट classpath का उपयोग कर:

export CLASSPATH=$CLASPATH:/home/andy/research/software/weka/weka.jar 

java weka.core.SystemInfo 

अधिक जटिल उदाहरण:

export WEKA_HOME=/home/andy/research/software/weka/ 

export CLASSPATH=$CLASPATH:$WEKA_HOME/weka.jar 

export HEAP_OPTION=-Xms4096m -Xmx8192m 
export JAVA_COMMAND=java $HEAP_OPTION 

$JAVA_COMMAND weka.core.SystemInfo 
0

को उसी फ़ोल्डर में आपके संभालने weka.jar आपको केवल ./ की आवश्यकता है जार नाम

java -jar ./weka.jar weka.core.SystemInfo 
संबंधित मुद्दे