2013-07-10 4 views
8

हाल ही में मैंने जावा डेस्कटॉप एप्लिकेशन में एक फिक्स लगाया। मैंने अपनी कक्षाओं में से एक कोड को बदलकर ऐसा किया, इसे संकलित किया और नए जार को उत्पादन वातावरण में भेज दिया।जावा प्रोग्राम कैसे पैच करें?

अब मुझे पूछा गया है कि केवल संकलित वर्ग को कॉपी करके, या यहां तक ​​कि एक पैचिंग प्रोग्राम/स्क्रिप्ट बनाने के लिए उत्पादन में जार को पैच करना संभव है जो केवल संशोधित फ़ाइलों को अपडेट करने में सक्षम होगा।

अतिरिक्त जानकारी:

  1. पैच रन टाइम में लागू किया जाना नहीं है। मतलब पैच एक अलग कार्यक्रम या गतिविधि के रूप में किया जा सकता है। मेरे पुराने कार्यक्रम को खुद को स्वतः अपडेट करने की आवश्यकता नहीं है।
  2. क्या यह वेब अनुप्रयोगों (WAR फ़ाइल) के साथ भी किया जा सकता है?

सबसे अच्छा जवाब मैं आया यह है, लेकिन यह 2 साल का है। Patching Java software

क्या मेरी आवश्यकता दुर्लभ है? मैंने जावा एप्लिकेशन को पैच करने के लिए कभी भी एक ट्यूटोरियल नहीं देखा है।

+0

यह प्रश्न ऑफ-विषय प्रतीत होता है क्योंकि यह बुनियादी ढांचे के बारे में है - प्रोग्रामर के लिए बेहतर अनुकूल है या शायद सर्वरफॉल्ट – Bohemian

उत्तर

7

अब मुझे पूछा गया है कि केवल संकलित वर्ग को कॉपी करके, या यहां तक ​​कि एक पैचिंग प्रोग्राम/स्क्रिप्ट बनाने के लिए उत्पादन में जार को पैच करना संभव है जो केवल संशोधित फ़ाइलों को अपडेट करने में सक्षम होगा ।

हां। jar -u का उपयोग कर एक JAR फ़ाइल को पैच करना संभव है। एक वैर फ़ाइल को उसी तरह पैच करना भी संभव है।

लेकिन मैं इसकी अनुशंसा नहीं करता। जेएआर या डब्ल्यूएआर फ़ाइल तैनाती/प्रबंधन की इकाई होनी चाहिए। यदि आप उत्पादन सर्वर पर जेएआर/डब्ल्यूएआर फाइलों को पैच करना शुरू करते हैं, तो वास्तव में इसका उपयोग करने के लिए यह मुश्किल है। यदि आप सावधान नहीं हैं, अराजकता और भ्रम शासन करेगा।

एकमात्र ऐसी स्थिति जहां पैचिंग अपरिहार्य है, जहां आपके पास तृतीय-पक्ष लाइब्रेरी या कुछ ऐसा है जिसे आप स्रोत से नहीं बना सकते हैं, लेकिन आपको फिर भी संशोधित करने की आवश्यकता है। लेकिन यहां तक ​​कि उस मामले में अपने निर्माण मंच पर जेएआर/डब्ल्यूएआर को संशोधित करना और संशोधित जेएआर/डब्ल्यूएआर को तैनात करना सबसे अच्छा है। उत्पादन मंच पर जार, वार्स या तैनात वेबपैच पैच करने का प्रयास करना एक बुरा विचार है।


मेरी आवश्यकता दुर्लभ है?

हां। एक बेहतर तरीका है ...

मैंने जावा एप्लिकेशन को पैच करने के लिए कभी भी एक ट्यूटोरियल नहीं देखा है।

आश्चर्य की बात नहीं, यह देखते हुए एक बेहतर तरीका है कि वहाँ ...

+0

आपके उत्तर के लिए धन्यवाद। जैसा कि मैंने परीक्षण किए गए जार/युद्ध को फिर से तैनात करने में कहा है, वैसे ही मैं सामान्य रूप से करता हूं। यह हमारी सुरक्षा और मानक विभाग से एक जनादेश था और मुझे खुशी है कि मैं इस आवश्यकता को अजीब के रूप में ढूंढने वाला अकेला नहीं था। –

+0

@JefreyValencia - मैं "हमें पैच और उचित ढंग से परीक्षण किए गए JARs प्रदान करने" के साथ वापस धक्का देने का लुत्फ उठाऊंगा। मुझे यह जानकर भी उत्सुकता होगी कि उन्हें पैच करने की क्या ज़रूरत है। यह सब थोड़ा विचित्र लगता है ..,। –

+0

हाय फिर से स्टीफन, कम या ज्यादा सुरक्षा और मानक टीम केवल पहले से ही उत्पादन में किए गए परिवर्तनों की निगरानी करने की कोशिश कर रही है। उनके दिए गए उदाहरण (सरलीकृत/रीफ्रेशेड) में से एक यह है कि यदि विंडोज ओएस में एक बग मौजूद है तो आप इसे एप्लिकेशन को पुनर्स्थापित करने के बजाय इसे पैच करते हैं। यह तर्क समझ में आता है लेकिन मेरे सीमित अनुभव में मुझे नहीं पता था कि यह जावा एप्लिकेशन के लिए संभव था या यहां तक ​​कि अच्छा अभ्यास भी था। –

4

आप jar uf jarfile classfile(s)

यह कर नए लोगों के साथ एक ही नाम के साथ पुराने वर्ग फ़ाइलों का स्थान ले लेगा द्वारा वर्ष जार अद्यतन कर सकते हैं, का उपयोग करते हुए कि हार्ड

+0

आपके उत्तर के लिए धन्यवाद, बस स्टीफन उत्तर चुना क्योंकि उसने अतिरिक्त जानकारी भी जोड़ा। –

2

जावा डेस्कटॉप क्षुधा की तैनाती के लिए नहीं होना चाहिए एक ऑटो patcher बना रही है। , आमतौर पर ऐप इंस्टॉल करने का सबसे अच्छा विकल्प होता है। Java Web Start का उपयोग कर। जेडब्ल्यूएस विंडोज़ पर काम करता है, ओएस एक्स & * निक्स। इसमें ऑटो-अपडेट शामिल है।

क्या यह वेब अनुप्रयोगों (WAR फ़ाइल) के साथ भी किया जा सकता है?

नहीं जेडब्ल्यूएस डेस्कटॉप ऐप्स के लिए है। केवल।

+0

आपके उत्तर के लिए धन्यवाद। हम भविष्य के डेस्कटॉप अनुप्रयोगों पर इसे आजमा सकते हैं –

0

Getdown को एक नजर डालें - जो डाउनलोड करने और एक उपयोगकर्ता की मशीन पर फ़ाइलों का एक संग्रह को स्थापित करने और उन्नयन उन फ़ाइलों के लिए एक प्रणाली प्रदान करना है जैसी जरूरत थी।

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