كيف يمكنني اكتشاف أي إدخال ClassPath شريطة فئة؟
-
23-08-2019 - |
سؤال
أنا أحمل عدة فصول مختلفة من عدة أشخاص مختلفة من محمل فئة مخصصة في جافا. أنا خلق مخصص 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]
يجب أن تعطيك كل ما تحتاج لمعرفته للعثور على الفصل / جرة تريده.