2009-06-04 10 views
13

मैं इस वर्ग है:System.out जब विंडोज कमांड लाइन से जार-फ़ाइल बुला काम नहीं कर रहा

public class Test { 
    public static void main(String[] args) { 
     System.out.println("Hello World!"); 
    } 
} 

और मैं समारोह "runnable जार में निर्यात करें" ग्रहण के लिए प्रयोग किया जाता है कि यह एक निष्पादन योग्य जार-फाइल में बनाने के लिए (test.jar)। जब मैं ग्रहण में इस कार्यक्रम को चलाता हूं, तो यह "हैलो वर्ल्ड!" प्रिंट करता है, लेकिन जब मैं कमांड लाइन से जार-फाइल को कॉल करता हूं, तो कुछ भी नहीं होता है।

मैं इस तरह जार फ़ाइल बुला की कोशिश की है:

test.jar 
test.jar -jar 

कोई उत्पादन नहीं है।

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

धन्यवाद!

+0

कैसे आप कमांड लाइन से जार फ़ाइल कहते हैं? क्या आउटपुट (यदि कोई है) क्या आप देखते हैं? सबसे अधिकतर जार फ़ाइल निष्पादित नहीं होती है। – kgiannakakis

+0

मैंने अपने प्रश्न को और स्पष्ट रूप से इंगित करने के लिए अद्यतन किया कि मुझे पूरा यकीन है कि जार-फ़ाइल निष्पादित हो रही है और यह दिखाने के लिए कि मैं इसे कैसे कॉल करता हूं। – Jordi

उत्तर

32

आप चाहिए रन जार का उपयोग कर

java -jar test.jar 

नोट (आपका JRE के बिन फ़ोल्डर आदेश किसी भी स्थान से काम कर रहे आदेश प्राप्त करने के लिए पथ में जोड़ा जाना चाहिए): मैं आपके द्वारा बनाए गए पता ग्रहण ग्रहण का उपयोग कर JAR लेकिन आप जानना चाहेंगे कि how does an executable JAR works

+5

मेरा मानना ​​है कि यह उत्तर सही है। केवल "test.jar" निष्पादित करना शायद "javaw.exe" का उपयोग करेगा जो "java.exe" का कंसोल-कम संस्करण है जो डिफ़ॉल्ट रूप से .jar फ़ाइलों से जुड़ा होता है। – pauldoo

+1

हाँ ... केवल विंडोज –

+0

पर जेआरई विंडोज़ पीआर डिफ़ॉल्ट पर पीएटीएच में खुद को स्थापित करता है, इसलिए उसके बाद तुरंत "java.exe" उपलब्ध होना चाहिए। –

3

जब आप 'test.jar' का उपयोग करके जार का आह्वान करते हैं तो ऐप की शुरूआत को जार फ़ाइलों के लिए पंजीकृत जावा हैंडलर को सौंप दिया जाता है, जो कमांड लाइन के संदर्भ में नहीं चलाएं।
डिफ़ॉल्ट जार हैंडलर कंसोल आधारित सिस्टम नहीं खोलता है। {आउट, गलती} फ़ाइल हैंडल, क्योंकि इसका मतलब यह होगा कि प्रत्येक जार फाइलों के लिए एक सीएमडी स्टाइल विंडो लॉन्च की जाएगी, जो आदर्श स्थिति नहीं है।
पिछला उत्तर, जावा -jar test.jar का उपयोग करके इसे वर्तमान cmd विंडो के संदर्भ में चलाने का कारण बनता है, और इस प्रकार आप आउटपुट देखेंगे।

8

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

एक जार मूल रूप से अभी-अभी संग्रह, तब भी आप जावा की आवश्यकता होगी वास्तव में जार (जावा जार your.jar)

तथ्य यह है कि खिड़कियों में आप एक संघ हो सकता है शुरू करने के लिए साथ javaw.exe इसका मतलब यह है ओएस द्वारा लॉन्च किया जाएगा जब आप जार पर डबल-क्लिक करेंगे, जैसे .txt फ़ाइल को नोटपैड के साथ स्वचालित रूप से खोला जा रहा है, यह .txt निष्पादन योग्य फ़ाइल नहीं बनाता है।

रूप में अच्छी तरह इस की जाँच करें: JAR files revealed

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