2013-04-03 7 views
6

में bootclassloader में लोड/उपकरण वर्ग को बदलने के लिए कोई भी विधि आवश्यक है: हमें प्लगइन.जर में एक वर्ग को हैक करने की आवश्यकता है, विस्तार से, एक वर्ग की गैर स्थैतिक विधि के विस्तार कार्यान्वयन को बदलें। जैसा कि नवीनतम जेरे में है, -Xbootclasspath/p काम नहीं करता है और केवल -Xbootclasspath/एक काम करता है। हम भी पूरे जरे को बदलना नहीं चाहते हैं।नवीनतम सूर्य जेआर

हम जानते हैं कि हमारा अंतिम समाधान प्लगइन.जर फ़ाइल को सीधे बदलना है। लेकिन जानना चाहते हैं कि क्या कुछ बेहतर समाधान है जिसे सीधे जार फ़ाइल को बदलने की आवश्यकता नहीं है।

उदाहरण के लिए, यह नहीं पता कि JVMTI या JVMPI जैसी चीजें काम करेगी या नहीं? या किसी भी तरह से JVM के इंपल को एक आसान तरीके से बदल सकते हैं?

उत्तर

5

अपने वर्ग पर निर्भर करता है, लेकिन आप शायद है कि एक अलग वर्ग को लोड करता है एक कस्टम ClassFileTransformer इंजेक्षन करने के लिए एक javaagent इस्तेमाल कर सकते हैं, अगर पूछे ... (javaagents पर सरल example)। लेकिन यह केवल तभी काम करता है, अगर वर्ग पहले लोड नहीं किया गया था ...

+0

हम "sun.plugin2.applet.Plugin2ClassLoader" वर्ग को हैक करना चाहते हैं, पहले से ही जावा एजेंट के साथ गठबंधन करने के लिए जावास्क्रिप्ट का उपयोग कर रहे हैं। सुनिश्चित नहीं है कि यह काम करेगा या नहीं। अभी भी जांच रहा है ... –

+0

यह काम करता है .... मैं पहले से ही यह सोच रहा हूं, लेकिन wrm का जवाब मुझे और अधिक आत्मविश्वास देता है और अधिक प्रयोगों के बाद। यह बहुत अच्छा काम करता है! –

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