2012-03-13 7 views
14

से जावा कैसे चलाएं मैं अपने जावा प्रोग्राम को चलाने के लिए एक बाश स्क्रिप्ट लिखने की कोशिश कर रहा हूं (सामान्य समस्या, दाएं?)। मैं इसे काम करने के लिए काफी कुछ नहीं मिल सकता है।सिग्विन

java -classpath 'cygpath -u "/cygdrive/c/Projects/common/lib/rome-1.0.jar:/cygdrive 
/c/Projects/common/lib/jdom-1.0.jar:/cygdrive/c/Projects/common/lib/jsoup-1.6.1.jar: 
/cygdrive/c/Projects/common/lib/mysql-connector-java-5.1.18-bin.jar:/cygdrive/c/Projects 
/Freereader/bin/"' com.free.syndication.SQLfeeder 

क्षमा गड़बड़ी, मैं सिर्फ एक ही बार में सब कुछ करने के कोशिश कर रहा हूँ: कई संपादन के बाद, यहाँ मैं कैसे classpath सेट करने के लिए और उसके बाद प्रोग्राम को निष्पादित कोशिश कर रहा हूँ है। यह मुझसे कहता है कि मेरे कार्यक्रम का मुख्य वर्ग नहीं पाया जा सकता है! ((

कोई भी विचार?

+0

क्या आपने 'echo' cygpath -u "/cygdrive/c/Projects/common/lib/rome-1.0 'की कोशिश की है।जार:/cygdrive /c/Projects/common/lib/jdom-1.0.jar:/cygdrive/c/Projects/common/lib/jsoup-1.6.1.jar: /cygdrive/c/परियोजनाएं/सामान्य/lib /mysql-connector-java-5.1.18-bin.jar:/cygdrive/c/Projects /फ्रीreader/bin/"'' यह सुनिश्चित करने के लिए कि यह सही पथ बनाता है? – TheLQ

+0

यदि आप बहुत आसान नहीं होंगे उन जारों को सीधे अपने वर्गपैठ में जोड़ने के बजाय उन्हें जोड़ें? या, क्या आप इसे अपने मामले में नहीं कर सकते हैं? –

+0

जावा और सिगविन के बारे में अक्सर पूछे जाने वाले प्रश्न: http://www.inonit.com/cygwin/faq/ - Gives साइगविन और विंडोज़ जावा –

उत्तर

11
  • जावा classpath टोकन विभाजक के रूप में अर्धविराम का उपयोग करता है।
  • उपयोग के बजाय बैकटिक एकल उद्धरण

प्रयास करें:

java -classpath `cygpath -u "/cygdrive/c/Projects/common/lib/rome-1.0.jar;/cygdrive 
/c/Projects/common/lib/jdom-1.0.jar;/cygdrive/c/Projects/common/lib/jsoup-1.6.1.jar; 
/cygdrive/c/Projects/common/lib/mysql-connector-java-5.1.18-bin.jar;/cygdrive/c/Projects 
/Freereader/bin/"` com.free.syndication.SQLfeeder 
+0

के बीच क्लासपाथ को कब और कैसे परिवर्तित करना एक अच्छा स्पष्टीकरण धन्यवाद, इसके साथ और कुछ मामूली समायोजन सब कुछ काम करता है। – blaughli

+0

@ user1010997 यह सही है। एक आवश्यकता -pw। –

2

आप बैकटिक की जरूरत नहीं

java -classpath `cygpath -u "/cygdrive/c/Projects/common/lib/rome-1.0.jar:/cygdrive 
/c/Projects/common/lib/jdom-1.0.jar:/cygdrive/c/Projects/common/lib/jsoup-1.6.1.jar: 
/cygdrive/c/Projects/common/lib/mysql-connector-java-5.1.18-bin.jar:/cygdrive/c/Projects 
/Freereader/bin/"` com.free.syndication.SQLfeeder 
1
  1. आप बैकटिक का उपयोग करना चाहिए ('है? ` 'प्रतीक) या $ (cmd) बैश sytax cmd उत्पादन
  2. जावा यूनिक्स (cygwin-) शैली पथ, केवल खिड़कियों शैली समझ में नहीं आता विकल्प।

और आखिरी first link in google जवाब पर आप सवाल

5
  • बैश में, वाक्य रचना $(command) बैकटिक `command`
  • cygpath से स्पष्ट है पथ परिवर्तित करने के लिए एक विकल्प है -p विंडोज और यूनिक्स के बीच मूल्यों (एकल पथ नामों के विपरीत) की तरह, यानी
    • cygpath -pu 'C:\Users\me\bin;C:\Users\me\project\bin'/cygdrive/c/Users/me/bin:/cygdrive/c/Users/me/project/bin
    • cygpath -pw विपरीत दिशा में भी ऐसा ही होगा दे देंगे

ध्यान दें कि cygpath -u "/cygdrive/c" (अपने प्रश्न के रूप में) कुछ भी नहीं बदलेगा, जब से निर्देशिका का नाम वांछित में पहले से ही है (यूनिक्स) वाक्यविन्यास। आप इसे भी छोड़ सकते हैं।

तो, आदेश हो जाता है:

CP="C:/Projects/common/lib/rome-1.0.jar;C:/Projects/common/lib/jdom-1.0.jar;C:/Projects/common/lib/jsoup-1.6.1.jar; 
C:/Projects/common/lib/mysql-connector-java-5.1.18-bin.jar;C:/Projects 
/Freereader/bin" 
# for a Windows Java binary: 
java -classpath "$(cygpath -pw "$CP")" com.free.syndication.SQLfeeder 
# for a Unix Java binary: 
java -classpath "$(cygpath -pu "$CP")" com.free.syndication.SQLfeeder 

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

0

इस मुद्दे का मुख्य कारण बैकटिक नहीं है बल्कि इसके बजाय कोलोन बनाम सेमी-कोलन का मुद्दा है। चूंकि साइगविन में, वहां चल रहा जावा, डॉस/विंडोज वातावरण के लिए है, यह ';' की उम्मीद कर रहा है पथ विभाजक के रूप में।

जबकि बैकटिक मदद करता है, इस मुद्दे का मुख्य मूल कारण ':' और ';' के बीच के अंतर पर जोर देना चाहिए। जब जावा यूनिक्स या विंडोज वातावरण में है।

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