2012-05-01 8 views
8
नहीं

मैं जावा सांत्वना आवेदन लिखने के लिए कोशिश कर रहा हूँ करता है, कोड काफी सरल है:जावा: println() कंसोल के लिए लिखना चाहिए, लेकिन यह

public class ConsoleTest { 
    public static void main(String[] args) { 
     System.out.println("test"); 
    } 
} 

अगर मैं इस एप्लिकेशन को चलाने ग्रहण से, फिर मुझे ग्रहण के "कंसोल" में "test" दिखाई देता है, लेकिन यदि मैं अपने ऐप को "रननेबल जेएआर फ़ाइल" के रूप में निर्यात करता हूं और इसे Windows XP cmd.exe से चलाता हूं, तो कंसोल पर कुछ भी प्रतिबिंबित नहीं होता है।

सुरक्षित तरफ, मैंने System.console() को जांचने का प्रयास किया, यह null देता है।

क्या गलत हो सकता है?

+1

आपका कोड मेरे लिए ठीक काम करता है। जब आप इसे cmd.exe से चलाते हैं, तो आप क्या देखते हैं? –

+1

मुझे लगता है कि 'System.console() 'ग्रहण में भी शून्य वापस आ जाएगा। –

+0

आप कमांड लाइन से जार कैसे चला रहे हैं? – Attila

उत्तर

15

कैसे आप ग्रहण के बाहर अपने कार्यक्रम चल रहे हैं साथ कंसोल में फ़ाइल को चलाने के?

आप आप कभी-कभी javaw बजाय कोई सांत्वना उत्पादन का उत्पादन किया जाएगा उपयोग कर रहे हैं की तरह

java -jar yourjar.jar

या

java -cp yourjar.jar ConsoleTest

कमांड लाइन का उपयोग करना चाहिए। javaw का STDOUT null है। शायद यह तब होता है जब आप अपनी जार फ़ाइल पर क्लिक कर रहे होते हैं।

+0

एलेक्सआर, आप सही हैं, धन्यवाद, मैंने सुझाव दिया है कि मैंने अपना ऐप चलाने की कोशिश की है, यह काम करता है। लेकिन यह हर बार इस तरह से ऐप चलाने के लिए थोड़ा दर्दनाक है, क्या मैं इसे 'yourjar.jar' टाइप करने और एंटर दबाते समय इसे काम करने का कोई तरीका है? –

+2

@ डेमेट्री फ्रैंक, जार फ़ाइल पर क्लिक करके प्रोग्राम चलाना वैसे भी सुरक्षित नहीं है। यह क्लाइंट की मशीन पर इसे निष्पादित करने के लिए एक्सटेंशन 'jar' के मैपिंग पर निर्भर करता है (डिफ़ॉल्ट रूप से' जावा 'द्वारा)। कई डेवलपर्स इस मैपिंग को 'winzip' में बदलते हैं क्योंकि वे इसे क्लिक करके जार फ़ाइल की सामग्री देखना चाहते हैं।तो, जावा प्रोग्राम को निष्पादित करने या वेबस्टार्ट का उपयोग करने के लिए यूनिक्स के लिए विंडोज़ और शैल स्क्रिप्ट के लिए 'bat' फ़ाइल लिखना सबसे अच्छा तरीका है। – AlexR

+0

धन्यवाद, लेकिन वैसे भी मैं अपने ऐप को "कंसोल" ऐप के रूप में संकलित करने का कोई तरीका लेना चाहता हूं, और जाव को इसे 'जावा -जर myapp.jar' जैसा ही चलाना चाहिए। यह कम से कम उन लोगों के लिए काम करेगा जिन्होंने अपनी सेटिंग्स नहीं बदली =) दयालुता कि ऐसा कोई विकल्प नहीं है। –

1

संभावना है कि आपकी चलने योग्य जार फ़ाइल काम नहीं कर रही है जैसा कि आप उम्मीद करते हैं और वास्तव में आपके कंसोलटेस्ट क्लास को नहीं चला रहे हैं।

2

इसे कमांड लाइन से कक्षा में संकलित करने और फिर इसे चलाने का प्रयास करें। क्या वह काम करता है?

javac ConsoleTest.java 
java ConsoleTest 
+0

हू, यह काम करता है! धन्यवाद। असल में @ एलेक्सआर सही है, मैंने सुझाव दिया कि मैंने अपना ऐप चलाने की कोशिश की, और यह काम करता है। –

0
की तरह क्या मछली के होवरक्राफ्ट पूर्ण लिखा है, निम्न आदेश के साथ cmd.exe का उपयोग कर जावा फाइल संकलन

:,

javac ConsoleTest.java 

तो यह एक .class फ़ाइल बनाने जाएगा और हम संकलित करने के लिए चाहते हैं यह इस आदेश के साथ:

java ConsoleTest 

इसे फिर "परीक्षण" आउटपुट प्रदर्शित करना चाहिए।

4

आपको कमांड लाइन से अपनी जार फ़ाइल चलाने की आवश्यकता है।

यदि आप उस पर डबल क्लिक करते हैं, तो आप पृष्ठभूमि में कमांड लाइन संचालन को चलाने में सक्षम नहीं होंगे। जार फ़ाइलों को आमतौर पर डबल क्लिक करके चलाया जाता है जब वे जीयूआई शामिल करते हैं।

एक कमांड प्रॉम्प्ट से एक जार फ़ाइल को चलाने के लिए, बस ऐसा करते हैं:

java -jar ConsoleTest.jar 

मान लिया जाये कि आप java.exe के लिए वातावरण चर निर्धारित किया है और वर्तमान निर्देशिका जार फ़ाइल है।

यदि यह काम नहीं करता है, तो संभवतः यह आपके कोड की गलती नहीं है। यह भी मौका है कि मुख्य वर्ग को इंगित करने वाली मेनिफेस्ट फ़ाइल गलत तरीके से स्थापित की गई थी।

+0

धन्यवाद, आप सही हैं। लेकिन जब मैं 'consoletest.jar' टाइप करता हूं तो इसे काम करने का कोई तरीका है? –

+0

बस cmd में consoletest.jar टाइप करना मदद नहीं करेगा क्योंकि यह डबल क्लिक करने जैसा ही होगा। हालांकि आप एक बैच फ़ाइल बना सकते हैं जो java -jar consoletest.jar चलाता है जब आप इसे – EnKrypt

+0

पर क्लिक करते हैं, तो मैं समझता हूं कि टाइपिंग जो इसे डबल-क्लिक करने जैसा ही है। लेकिन मैं अपने ऐप को "कंसोल" ऐप के रूप में संकलित करने का कोई तरीका लेना चाहता हूं, और इस ऐप को 'जावा -जर myapp.jar' द्वारा चलाए जाने वाले ठीक उसी तरह डबल-क्लिक करके व्यवहार करना चाहिए। मुझे ऐसे विकल्प प्रदान न करने का कोई कारण नहीं दिखता है, जहां तक ​​बैच फ़ाइलें और मैन्युअल टाइपिंग दर्दनाक है। –

-1

आपको जावा jdk इंस्टॉल करना होगा और फ़ाइल java.exe फ़ाइल वाली निर्देशिका की जड़ को अपने सिस्टम की निर्देशिका में जोड़ना होगा, आपको jdk की स्थापना मार्गदर्शिका में और जानकारी मिल जाएगी।

और फिर आदेश

> java file.java 
+0

अगर मैं उस प्रतिष्ठा में था तो मैं मतदान कर दूंगा। आपका उत्तर समस्या से असंबंधित है और यहां तक ​​कि आपके द्वारा रखे गए कमांड का छोटा टुकड़ा भी गलत है – EnKrypt

+0

क्षमा करें, मैं बस कहना चाहता था कि आपको जावा कमांड का उपयोग करना है जो जावा jdk का हिस्सा है और यह सुनिश्चित कर लें कि पर्यावरण परिवर्तनीय अच्छी तरह से कॉन्फ़िगर किया गया है। मैं इसे .java फ़ाइलों के लिए जानता हूं लेकिन यह अधिक तर्क के साथ .jar फ़ाइलों के लिए भी काम करता है। –

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