2014-07-25 10 views
5

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

+0

मैं पढ़ विचार करूँगा http://stackoverflow.com/questions/7989135/is: मैं और अधिक जटिल hotpush मामलों के कुछ ही पीछे कार्यप्रवाह समझने में इस लेख बहुत उपयोगी पाया -यह-संभव करने के लिए प्रोग्राम के रूप में-संकलन जावा-स्रोत-कोड-इन-स्मृति-केवल)। स्वीकृत उत्तर में किसी भी तरह से शायद आपकी जरूरतों के अनुरूप होगा। – ChiefTwoPencils

+1

जेडीडब्लूपी, और विशेष रूप से [जेडीआई] (http://docs.oracle.com/javase/7/docs/technotes/guides/jpda/architecture.html#jdi) पर एक नज़र डालें। –

उत्तर

3

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

आप JDI documentation पढ़ सकते हैं, और विशेष रूप से Java instrument class (जिसे क्लास ट्रांसफार्मर को कॉन्फ़िगर करने के लिए उपयोग किया जाता है) पर एक नज़र डालें। यहां setting up a JDI launcher पर एक संबंधित प्रश्न है (एक नया JVM लॉन्च करें)।

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