لا يمكن لـ Eclipse تحميل الصور بعد تصدير حزمة الجرة؟
سبب هذه المشكلة هو في الغالب بسبب مشكلة المسار ، والتي غالبًا ما يتم تشغيلها بشكل طبيعي في المشروع ، ولكن بمجرد تعبئتها في جرة ، لا يمكن عرضها بشكل طبيعي. دعنا نلخص طرق حل هذه المشكلة:
1. حل باستخدام ملفات الموارد الخارجية
بعد تغليف المشروع لإنشاء جرة ، قم بإنشاء مجلد جديد ووضع جميع ملفات الصور المستخدمة في المشروع وملفات JAR التي تم إنشاؤها في هذا الدليل. طالما أن الكود يشير إلى ملفات الصورة بشكل صحيح ، مثل: ImageIcon Image = new ImageIcon (SwingResourCemanager.getImage ("icons/logo.gif")) ؛
وبهذه الطريقة ، لم يتم وضع ملف الصورة وملف الفصل في الحزمة معًا. ملف الفئة موجود في الحزمة ، وملف الصورة موجود في دليل جذر المشروع.
2. حل باستخدام ملفات الموارد الداخلية
ضع ملفات الصور المستخدمة في حزمة المشروع ، وعند التغليف ، يتم إدخال ملفات الصور في ملف JAR في نفس الوقت. يجب أن تستخدم هذه الطريقة واحدة مما يلي في الكود المحدد:
ImageIcon Image = new ImageIcon (this.class.getResource ("icons/logo.gif")) ؛فيما يلي وصف مفصل لهذه الطريقة:
عندما تكتب برنامجًا للواجهات الرسومية ، يجب عليك استخدام موارد الصور المختلفة. لذا ، عند نشر برنامجك ، كيف تنشر موارد الصور هذه؟
تتمثل أبسط طريقة في تعبئة موارد الصور هذه مع ملف الفصل الخاص بك في ملف جرة قابل للتنفيذ ، بحيث تحتاج فقط إلى نشر ملف جرة لتضمين جميع المحتويات ، ويمكن للمستخدمين تشغيل البرنامج فقط بالنقر المزدوج على ملف JAR. إذا قمت بتعبئة الصور في ملف جرة ، فكيف يمكنك الوصول إلى هذه الصور عند كتابة البرامج؟
ما هي مسارات هذه الصور؟ يمكنك استخدام طريقة getResource () لحل هذه المشكلة.
هنا نقوم بتحليل الحالات الأكثر شيوعًا:
1. يمكنك حزم جميع الموارد في Andy.jar ، وفصلك في حزمة: حزمة Andycpp ؛ يتم وضع جميع موارد الصور الخاصة بك في مجلد الصور ، ومجلد الصور موجود أيضًا في حزمة AndyCPP. بهذه الطريقة ، المسار النهائي هو:
آندي
| __andycpp
| __ guitest.class
| __ صور
| __ snap1.jpg
نظرًا لأن مجلد الصورة والفئة التي تشير إلى وجودها في نفس المستوى ، يمكنك الوصول إليه من خلال مسار نسبي:
java.net.url imgurl = guitest.class.getResource ("الصور/snap1.jpg") ؛ imageicon img1 = new imageicon (imgurl) ؛ما يجب الاهتمام به هنا هو قضايا القضية! يكون الجزء الداخلي من ملف الجرة حساسًا للحالة ، لذلك إذا كانت الصورة نفسها تسمى snap1.jpg وكتبت المسار إلى الصور/snap1.jpg ، فلن يتم العثور على الصورة. تجدر الإشارة أيضًا إلى أن كل فئة (ملاحظة ، وليس كائنًا) لديها طريقة getResource () ، لكن لا يمكنك استخدامها بشكل عرضي. يمكنك فقط استخدام طريقة getResource () لفئة في نفس مستوى مجلد الصورة. على سبيل المثال ، في الشكل أعلاه ، تكون فئة Guitest والصور في نفس المستوى ، لذلك تحتاج إلى استخدام طريقة GetResource () لهذه الفئة.
2. في حالة أخرى ، إذا كان لديك العديد من الفئات وكانت بنية الحزمة معقدة للغاية ، فمن غير المرجح أن تضع الصورة والفصل في نفس المستوى ، ولكن يجب أن تضع الصورة في الطبقة الخارجية والسماح لجميع الفئات بالوصول إلى الصورة من خلال المسارات المطلقة:
آندي
| __andycpp
| __ guitest.class
| __ صور
| __ snap1.jpg
الرمز كما يلي:
java.net.url imgurl = guitest.class.getResource ("/images/snap1.jpg") ؛ imageicon img1 = new imageicon (imgurl) ؛هل رأيت الفرق من الكود أعلاه؟ الفرق دقيق للغاية. فقط أضف عرقلة خلفية "/" أمام "الصور". يمثل هذا التراجع الخلفي الدليل الجذر ، ولا يمثل أي مرة أخرى المسار النسبي ..
تتحدث المقالة أعلاه لفترة وجيزة عن مشكلة مسار صور تغليف Java في الجرار ، كل المحتوى الذي شاركته معك. آمل أن يعطيك مرجعًا وآمل أن تتمكن من دعم wulin.com أكثر.