2009-07-27 12 views
14

मेरे पास एक जावा प्रोग्राम है जिसे मैं अपनी मशीन पर कहीं से भी चलाने में सक्षम होना चाहता हूं। मैं इसे अपने सिग्विन कमांड प्रॉम्प्ट से चलाने के लिए चाहता हूं। मैंने जावा कार्यक्रम को कॉल करने के लिए स्क्रिप्ट बनाई हैं। मैंने जावा प्रोग्राम का स्थान क्लासपाथ में जोड़ा, और स्क्रिप्ट काम करते हैं जब मैं उन्हें जावा प्रोग्राम की निर्देशिका से चलाता हूं। हालांकि, जब मैं किसी अन्य निर्देशिका से चलाने का प्रयास, मैं मिलता है:मैं एक अलग निर्देशिका से जावा प्रोग्राम कैसे चला सकता हूं?

#!/bin/sh 
CWD=`dirname "$0"` 
java -cp "$CWD/classes;$CWD/lib/AJarFile.jar" commandprogram/CommandProgram 

निम्न के जावा लाइन बदलने::

java -cp "$CWD/classes;$CWD/classes/commandprogram;$CWD/lib/AJarFile.jar" CommandProgram 

पैदा करता

java.lang.NoClassDefFoundError: commandprogram/CommandProgram 

यह मेरी स्क्रिप्ट है एक ही परिणाम।

+0

आप अपनी स्क्रिप्ट पोस्ट कर सकता, कि लोगों में ... –

+0

आपको बस इतना करना जावा commandprogram/CommandProgram.class या जावा जार commandprogram/commandProgram की आवश्यकता नहीं है देखने के लिए जहां पर एक बेहतर विचार दे देंगे .jar? –

+0

'पथ विभाजक नहीं है जो आपके द्वारा उपयोग किए जाने वाले अर्धविराम (;) के बजाय एक कोलन (:) है? –

उत्तर

3

बस सब कुछ मैं के बारे में सोच सकता है के बारे कोशिश कर के बाद, मैं कमान और देखा बाहर गूँजती कि सिग्विन पथ और विंडोज पथों का मिश्रण था। के बजाय "/ cygdrive/सी/कार्यक्रम \ फ़ाइलें/..."

:

#!/bin/sh 
CWD=`dirname "$0"` 
CWD=`cygpath -w "$CWD"` 
java -cp "$CWD/classes;$CWD/lib/AJarFile.jar" commandprogram/CommandProgram 

फिर CWD "\ Program Files \ ... सी" में बदल दिया: समाधान के लिए स्क्रिप्ट को बदलने के लिए था

मुझे पहले इस समस्या का सामना करना पड़ा था और इसे cygpath -w समाधान के साथ हल किया गया था, लेकिन फिर मेरी स्क्रिप्ट को थोड़ा बदल दिया और ध्यान नहीं दिया कि पथ समस्या वापस आई है।

20

उदाहरण क्लासपाथ करने के लिए अपने निर्देशिका जोड़ें:

java -classpath commandprogram CommandProgram 

या

java -classpath directory_to_program Program 
1

आप बिंदु का उपयोग करने के लिए संकुल को अलग करने, स्लैश नहीं किया है।

जावा -cp "$ CWD/वर्गों; $ CWD/lib/AJarFile.jar" commandprogram.CommandProgram

+0

/काम करता है। ध्यान रखें कि स्क्रिप्ट के साथ निर्देशिका में जब स्क्रिप्ट काम करता है। – Swoogan

-4

एक जावा फ़ाइल चलाने का हमेशा की तरह आप cmd पर निम्न का उपयोग कर सकते हैं, Java/Bin फ़ोल्डर में बचाने के लिए और आप इस तरह के रूप में विभिन्न D: निर्देशिका में फ़ाइल सहेजें तो भागो cmd

C:\Program Files\Java\jdk1.7.0_05\bin> javac filename.java && java classname 

है शीघ्र:

D:\Project java> set path=%path%;C:Program Files\Java\jdk1.7.0_05\bin 
+7

जावा 'bin' निर्देशिका में अपनी जावा फाइलों या क्लास फ़ाइलों को सहेजना वास्तव में बहुत असामान्य है और इससे बचा जाना चाहिए। जावा 'बिन' निर्देशिका जावा की अपनी बाइनरी फाइलों के लिए है और * कुछ भी नहीं *। – Mac

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