2011-08-14 20 views
5

मेरे पास एक साधारण जावा फ़ाइल Q.java है जो बाहरी लाइब्रेरी फ़ाइल X.jar पर निर्भर करती है। Q.java और X.jar दोनों एक ही निर्देशिका में हैं। मैं कमांड लाइन से Q.java संकलित कर सकता हूं: "javac -cp X.jar Q.java"। यह एक Q.class फ़ाइल उत्पन्न करता है। मैं इसे कैसे चला सकता हूं?कमांड लाइन से जावा प्रोग्राम चलाना जो जार फ़ाइल पर निर्भर करता है?

1) जावा क्यू 2) जावा -cp X.jar क्यू

मैं सूत्र में एक अपवाद हो रही "मुख्य" java.lang.NoClassDefFoundError रखें:: की वजह से क्यू : जावा मैं इन सभी की कोशिश की .lang.ClassNotFoundException: क्यू

तो मैं इसे कमांड लाइन से कैसे चला सकता हूं कि मेरे पास कक्षा फ़ाइल है?

+0

क्या Q.java में 'पैकेज' घोषणा है? –

+0

@TedHopp क्या इससे कोई फर्क पड़ता है? मेरे पास एक समान समस्या है: http://stackoverflow.com/questions/43156180/classpath-option-works-for-javac-but-not-for-java-windows –

उत्तर

10
java -cp X.jar:. Q 

आप classpath कि आप वर्गों को हल करने जार निर्भरता और वर्तमान स्थानीय निर्देशिका का उपयोग करना चाहते में निर्दिष्ट करना होगा।


संपादित करें टिप्पणी में सुझाव दिया:

Windows पर, ; द्वारा : बदल देते हैं:

java -cp X.jar;. Q 
+4

विंडोज़ में, आपको ";" का उपयोग करना होगा, नहीं ":", तो वहां "जावा-सीपी एक्स .jar; क्यू" होगा –

0

अपने classpath में वर्तमान निर्देशिका सेट, यह समस्या का समाधान करना चाहिए। अधिकांश समय, हमें कक्षा में वर्तमान निर्देशिका की आवश्यकता होती है, इसलिए आमतौर पर मुझे "।" सेट करने की सलाह दी जाती है। (उद्धरण के बिना) आपके सिस्टम में प्रत्येक रन के लिए सेट करने के बजाय क्लासस्पैट पर्यावरण चर।