URI वर्ग के लिए जावा इंस्ट्रूमेंटेशन: एक निर्भरता जोड़ना ClassNotFoundException को फेंकता है

Dec 12 2020

मैंने एक URI कंस्ट्रक्टर को एक लॉगशीपर में बनाया गया URI लिखने के लिए लिख दिया है। लॉगशीपर क्लास मेरी एजेंट लाइब्रेरी का हिस्सा है जो एक मावेन निर्भरता और एक रनटाइम अर्ग दोनों है।

एजेंट के अंदर का इंस्ट्रूमेंटेशन उस कंस्ट्रक्टर में कोड की लाइन जोड़ने के लिए एक ClassFileTransformer का उपयोग करता है। हालाँकि, जब कंस्ट्रक्टर को कॉल किया जाता है, तो यह एक ClassNotFoundException को विवरण के साथ फेंकता है: edu / overbeck / masterarbeit / agent / LogShipper। जब मैं क्लासअलाडर में एक नज़र डालता हूं, तो क्लास को लोड किया जाता है। मेरे IntelliJ डिबगर का एक स्क्रीनशॉट: [अजीब गलती] [1]

क्यों होता है ऐसा? Apache HTTP-core लाइब्रेरी से मेरा अन्य इंस्ट्रूमेंटेड क्लास, ContentLengthOutputStream, LogShipper के साथ ठीक काम करता है। [१]:https://i.stack.imgur.com/vf8b4.png

जवाब

PeerOverbeck Dec 13 2020 at 05:34

यह एक क्लास लोडर मुद्दा था - यहाँ अच्छी तरह से उत्तर दिया गया और समझाया गया: जावा नोक्लासडेफ़ाउंडअंडर जब इंस्ट्रूमेंटेड विधि से खुद की क्लास बुलाता है तो मेरे एजेंटलिब को जोड़ने के लिए एक्सबूटक्लासपैथ के रूप में लॉगशीपर क्लास वाले को मदद मिली।