2011-07-21 9 views
17

एक जावा क्लास है जो एक POST अनुरोध बनाता है और इसे सर्वलेट में भेजता है।जावा कोड से वापसी मूल्य

retcode=`$CLK_JAVA_PATH -cp $CLASSPATH test ${PASSWORD} ${HOSTNAME} ${TOOLSET}` 

if [ $? != "0" ];then 
     echo "ERROR: 
     echo "${retcode}" 
else 
     echo "${SCRIPT} Success" 
fi 

retcode हमेशा मूल्य "है:

public static void main(String[] args) throws IOException { 
    // Code logic goes here... 
    // No return Statement 
} 

यह इस तरह एक के शेल (ksh) स्क्रिप्ट कुछ से कहा जाता है: वर्ग फ़ाइल (परीक्षण) के मुख्य विधि इस तरह दिखता है 2 "अगर कोड विफल रहता है या सफल होता है तो स्वतंत्र। मेरा सवाल यह है कि मेरी मुख्य विधि का रिटर्न प्रकार "शून्य" है, तो कोड कुछ मूल्य क्यों लौटा रहा है?

उत्तर

17

जावा प्रोग्राम main से मूल्य लौटकर ऑपरेटिंग सिस्टम पर वापस निकलने के कोड को वापस नहीं लौटाते हैं, जैसा सी और सी ++ में किया जाता है। आप System.exit(code); बुला, उदाहरण के लिए द्वारा कार्यक्रम बाहर निकलने के कोड से बाहर निकलें और निर्दिष्ट कर सकते हैं:

// Returns exit code 2 to the operating system 
System.exit(2); 
4
System.exit(0); 

यह 0 (सब कुछ ठीक चला गया) त्रुटि कोड देता है। System.exit Doc

4

उपयोग

System.exit(someNumber); 

इस ओएस द्वारा देखा वापसी मान पर अपने एप्लिकेशन नियंत्रण दे देंगे।

34

एक जावा आवेदन की वापसी मान है नहीं इसके बारे में दिया गया मान है main विधि है, क्योंकि एक जावा आवेदन जरूरी अंत नहीं है जब यह main विधि निष्पादन समाप्त हो गया है।

इसके बजाय जेवीएम समाप्त होता है जब कोई और गैर-डिमन थ्रेड चल रहा है या System.exit() कहा जाता है।

और System.exit() वापसी मूल्य निर्दिष्ट करने का एकमात्र तरीका भी है: System.exit() को पारित तर्क का उपयोग अधिकांश ओएस पर जेवीएम प्रक्रिया के वापसी मूल्य के रूप में किया जाएगा।

तो इस के साथ अपने main() विधि समाप्त होने:

  • कि अपने जावा आवेदन वास्तव में जब main के अंत तक पहुँच जाता है बाहर निकालता है और
  • कि वापसी:

    System.exit(0); 
    

    दो बातें सुनिश्चित करेगा JVM प्रक्रिया का मान 0

+1

यह स्वीकार्य उत्तर होना चाहिए क्योंकि इसमें आंतरिक कार्यप्रणाली का बेहतर स्पष्टीकरण है। – searchengine27

2

आपका प्रोग्राम हमेशा बाहर निकलने के बाद एक रिटर्न कोड देता है। सामान्य कार्यक्रमों में, यदि आप रिटर्न कोड निर्दिष्ट नहीं करते हैं, तो यह शून्य लौटाएगा (इसमें वापसी प्रकार को void पर सेट करना शामिल है)।

जावा, हालांकि, विशेष होना पसंद है! जावा आपके द्वारा मुख्य विधि पर लौटाए गए रिटर्न कोड को वापस नहीं करेगा, लेकिन जेवीएम बाहर निकलने पर यह कुछ रिटर्न कोड वापस कर देगा (यह बहुप्रचारित कार्यक्रमों के लिए खाता है), और System.Exit(returnCode); कॉल निर्दिष्ट करता है।

1

आपको बाहर निकलने की स्थिति नहीं मिल रही है, यही $? है। आप मानक प्राप्त कर रहे हैं, जो भी System.out पर लिखा गया है।