سؤال

أنا أحمل عدة فصول مختلفة من عدة أشخاص مختلفة من محمل فئة مخصصة في جافا. أنا خلق مخصص URLClassLoader, ، إضافة عدة .jارس لذلك وتمريرها إلى ServiceLoader للعثور على الطبقات التي أريدها.

سؤالي هو: بالنظر إلى الفصل، هل هناك طريقة لاكتشافها. تم تحميلها من؟

هل كانت مفيدة؟

المحلول

يمكنك الاتصال ب FindResource على Classlader وتحليل عنوان URL الذي تحصل عليه لمعرفة المكان الذي سيصل إليه.

نصائح أخرى

يجب أن يعمل المقتطف التالي:

obj.getClass().getProtectionDomain().getCodeSource().getLocation().toString()

لاحظ أنه يجب عليك إضافة شيكات من أجل NULL عند استدعاء GetProtectionDectionDEction أو GetCodesource والتعامل بشكل مناسب في أي رمز الإنتاج. (يعتمد ذلك على محمل الفئة والأمان وما إلى ذلك)

حاول إعداد المعلمة

-verbose:class

عند تشغيل جرة / فئة باستخدام جاوة وسوف يعطيك هبوطا كبيرا للفصول التي يغطيها وأصلها، على سبيل المثال:

[Opened /usr/java/j2sdk1.4.1/jre/lib/rt.jar]
[Opened /usr/java/j2sdk1.4.1/jre/lib/sunrsasign.jar]
[Opened /usr/java/j2sdk1.4.1/jre/lib/jsse.jar]
[Opened /usr/java/j2sdk1.4.1/jre/lib/jce.jar]
[Opened /usr/java/j2sdk1.4.1/jre/lib/charsets.jar]
[Loaded java.lang.Object from /usr/java/j2sdk1.4.1/jre/lib/rt.jar]
[Loaded java.io.Serializable from /usr/java/j2sdk1.4.1/jre/lib/rt.jar]

يجب أن تعطيك كل ما تحتاج لمعرفته للعثور على الفصل / جرة تريده.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top