لماذا رمي رمز التعامل مع أيقونة بلدي nullpointerexception؟
-
19-09-2019 - |
سؤال
لقد أضفت صورة فوتوغرافية لزر My، ولكن عندما أقوم بتشغيل هذا الإطار، سيتم إلقاء هذا الاستثناء. لماذا تساعدني.
init:
deps-jar:
compile-single:
run-single:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at javax.swing.ImageIcon.<init>(ImageIcon.java:138)
at ClientGUI.IdAndPasswordFrame.initComponents(IdAndPasswordFrame.java:91)
at ClientGUI.IdAndPasswordFrame.<init>(IdAndPasswordFrame.java:22)
at ClientGUI.IdAndPasswordFrame$4.run(IdAndPasswordFrame.java:200)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:597)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)
BUILD SUCCESSFUL (total time: 1 second)
خط 138:
public ImageIcon (URL location) {
this(location, location.toExternalForm());
}
line91:
jButton1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Images/yahoo_1.gif"))); // NOI18N
يمكنني استخدام هذا الفحص السيئ (Peter Lang الموصى به) وهو: System.Out.Println (GetClass (). GetResource ("/ images / yahoo_1.gif")؛ ويعود فارغة، لماذا؟ الرجاء مساعدتي.
المحلول
هذا يعني ذاك getClass().getResource("/Images/yahoo_1.gif")
عائدات null
.
جافادوك تنص على أن هذا يحدث إذا
لا يمكن العثور على المورد أو لا يحتوي المدافع على امتيازات كافية للحصول على المورد.
تحقق فيما لو
getResource
عودة حقاnull
:
System.out.println(getClass().getResource("/Images/yahoo_1.gif"));
تأكد من صحة المسار الخاص بك وأنه في ClassPath الخاص بك.
تعديل:
لقد جربتها فقط مع Netbeans. لقد أنشأت الهيكل التالي
Source Packages
Images
yahoo_1.gif
وعمل الكود الخاص بك على ما يرام. هل هذا هيكلك؟
حاول النقر بزر الماوس الأيمن فوق التطبيق الخاص بك وحدد Clean and Build
.
نصائح أخرى
من أجل إصلاح هذا، تحتاج الصور إلى نسخها في سلة مهملات دليل - ليس في SRC. الدليل.
وإلا سوف تحصل بليغ طوال الوقت getclass (). GetResource ("image.png"). وبعد الطريق غير فارغة ويمكنك تعيينه على النحو الوارد أعلاه - فقط إذا قمت بنسخ الصور التي تحتاجها داخل الدليل الثنائي، حيث توجد ملفات .class لمشروعك.
هذا ثابت المشكلة. اسمحوا لي أن أعرف إذا ساعدت في هذا.
ioana.
يبدو وكأنه getClass().getResource("/Images/yahoo_1.gif")
عائدات null
أي أن .gif لا يمكن العثور عليها على classpath الخاص بك. (الصور مقابل الصور ربما؟)
عنوان URL الذي يتم تمريره هو فارغ من هذا الخط:
getClass().getResource("/Images/yahoo_1.gif")
من وثائق JDK:
GetResource (..) إرجاع] كائن URL لقراءة المورد، أو NULL إذا تعذر العثور على المورد أو لا يحتوي المدفوعات على امتيازات كافية للحصول على المورد
ربما تعني ("صور / Yahoo_1.gif") - أي المسار النسبي ليس مطلقا؟
كان لي نفس المشكلة. ما كان يعمل بالنسبة لي كان:
- ابحث في ملف JAR أو في مجلد BIN (واحد مع ملفات .class) وشاهد مسار الصورة.
- قائمة الاغراض
private class HandlerClass implements ActionListener{
public void actionperformed(ActionEvent event){
JOptionPane.showMessageDialog(null, String.format("%s", event.getActionCommand()));
}
}