ध्यान रखें कि sun.security.tools.JarSigner
कक्षा को कमांड लाइन उपयोगिता के रूप में उपयोग करने के लिए लिखा गया था और जावा कोड से कॉल करने के लिए डिज़ाइन नहीं किया गया था। नतीजतन, त्रुटि प्रबंधन बहुत अचानक है: कोड मानक त्रुटि के लिए एक त्रुटि संदेश मुद्रित करेगा और फिर System.exit()
1 पर कॉल करें।
इसका मतलब है कि यदि आप कक्षा को अपने जावा कोड से कॉल करते हैं और जब आप जार पर हस्ताक्षर करने का प्रयास करते हैं तो त्रुटि होती है, तो आपका कोड चलने वाला JVM बस बंद हो जाएगा। यह आपकी स्थिति के आधार पर ठीक हो सकता है, लेकिन यदि आपका कोड लंबे समय से चल रहा है या सेवा के रूप में कार्य कर रहा है, तो यह इतना अच्छा नहीं है।
क्लैंप की टिप्पणी के अनुसार प्रोसेसबिल्डर का उपयोग करके jarsigner टूल को कॉल करना बेहतर है। इसके बाद परिणामस्वरूप प्रक्रिया ऑब्जेक्ट पर waitFor()
पर कॉल कर सकते हैं और यह देखने के लिए कि आदेश सफल हुआ है, exitValue()
देखें। getInputStream()
ऑपरेशन विफल होने पर मानक आउट करने के लिए लिखे गए किसी भी त्रुटि संदेश को पढ़ने देगा।
आप जावा के भीतर से जार साइनर प्रक्रिया को कॉल कर सकते हैं। ProcessBuilder का सबसे अच्छा उपयोग। – clamp