المشكلة مع مسارات في جافا jar
سؤال
لدي مجلد يسمى وغيرها التي لديه صورة كنت ترغب في استخدام في آخر الملف في نفس المجلد ، Example.java.لذلك يجب الخ\صورة.png Etc\Example.java.لقد حاولت استخدام "الخ/صورة.png" كما مسار الصورة, ولكن ذلك لم ينجح.كيف ينبغي أن تذهب عن هذا ؟
كما افترض كانت الملفات في مجموعات مختلفة ، كيف لي أن أفعل ذلك ؟
بلدي الرئيسية .فئات java في حزمة تسمى الرئيسية للعلم.
تحرير:
أنا استخدم هذا:
ClassLoader.getSystemClassLoader().getResource("الخ\صورة.png");
المحلول
يمكنك استخدام Class.getResource()
, والذي يستخدم عربة الدرجة للحصول على عنوان URL إلى الموارد.على سبيل المثال:
import java.net.URL;
import javax.swing.ImageIcon;
public class Example {
public ImageIcon getImage() {
URL url = Example.class.getResource( "image.png" );
if( url != null ) {
return new ImageIcon( url );
}
return null; // TODO: Better error handling
}
}
الجزء المهم ، Example.class.getResource( "image.png" )
- صورة المسار المحدد نسبة إلى اسمه الطبقة ؛ في هذه الحالة فهو في نفس الدليل كـ ملف فئة.يمكنك أيضا استخدام هذا الخط في أي فئة أخرى ، وترك إشارة إلى Example.class
سليمة.
نصائح أخرى
أول الأشياء أولا.
هو الخ طرد ؟ وبعبارة أخرى في الجزء العلوي من المثال الخاص بك ملف لديك
حزمة وما إلى ذلك ؛
???
عادة حزمة أسماء أقل من الحالة التي هو السبب في أنني أطلب.
ثانيا ، على الرغم من أنه يمكنك استخدام المسارات النسبية للوصول إلى الموارد أنصح دائما باستخدام مسارات مطلقة.
لذلك
URL url = مثال.فئة.getResource("/Etc/صورة.png");
إذا الخ هو مجموعة, وإلا
URL url = مثال.فئة.getResource("/صورة.png");
إذا لم يكن.
أن العمل يجب أن يكون الدليل فيها وما هو في classpath.إذا كان داخل الجرة, أنا لا أتذكر إذا .يعمل classpath إذا لم يكن إضافة إلخ classpath ، مرجع الصورة دون classpath ، أو وضع الخ في دليل فرعي.ووضع هذا الدليل الفرعي في الصف المسار.