Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ImageIcon的getResource上的java.lang.NullPointerException Swing GUI_Java_Eclipse_Swing_Annotations_Embedded Resource - Fatal编程技术网

ImageIcon的getResource上的java.lang.NullPointerException Swing GUI

ImageIcon的getResource上的java.lang.NullPointerException Swing GUI,java,eclipse,swing,annotations,embedded-resource,Java,Eclipse,Swing,Annotations,Embedded Resource,我是swing GUI的初学者,我正在使用macbook pro和Eclipse Luna,我的图像与finder中的代码位于同一文件夹中,但在Eclipse中,图像与代码不在同一文件夹中显示。见: import javax.swing.ImageIcon; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JScrollPane; import javax.swing.SwingUtilities;

我是swing GUI的初学者,我正在使用macbook pro和Eclipse Luna,我的图像与finder中的代码位于同一文件夹中,但在Eclipse中,图像与代码不在同一文件夹中显示。见:

import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JScrollPane;
import javax.swing.SwingUtilities;
import java.awt.BorderLayout;

class Frame extends JFrame {
    public Frame() {
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setTitle("Online First Game Image");

        //below is where one of the errors are

        ImageIcon image = new ImageIcon(this.getClass().getResource("/image.png"));
        JLabel label = new JLabel(image);
        JScrollPane scrollPane = new JScrollPane(label);
        scrollPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
        scrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
        add(scrollPane, BorderLayout.CENTER);
        pack();
   }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
           @Override
           public void run() {
              // where the other error is
              new Frame().setVisible(true);
           }
        });
    }
}

下面是错误消息:

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
    at javax.swing.ImageIcon.<init>(ImageIcon.java:217)
    at Frame.<init>(Frame.java:13)
    at Frame$1.run(Frame.java:26)
    at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:756)
    at java.awt.EventQueue.access$500(EventQueue.java:97)
    at java.awt.EventQueue$3.run(EventQueue.java:709)
    at java.awt.EventQueue$3.run(EventQueue.java:703)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:726)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
线程“AWT-EventQueue-0”java.lang.NullPointerException中的异常 位于javax.swing.ImageIcon.(ImageIcon.java:217) 在帧处。(Frame.java:13) 在帧$1.run(Frame.java:26) 在java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)中 位于java.awt.EventQueue.dispatchEventImpl(EventQueue.java:756) 在java.awt.EventQueue.access$500(EventQueue.java:97) 在java.awt.EventQueue$3.run(EventQueue.java:709) 在java.awt.EventQueue$3.run(EventQueue.java:703) 位于java.security.AccessController.doPrivileged(本机方法) 位于java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76) 位于java.awt.EventQueue.dispatchEvent(EventQueue.java:726) 位于java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201) 在java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)中 位于java.awt.EventDispatchThread.PumpeEventsforHierarchy(EventDispatchThread.java:105) 位于java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) 位于java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93) 在java.awt.EventDispatchThread.run(EventDispatchThread.java:82) 正如我所说,如果有人能帮我修复这个bug,那将非常有帮助


编辑:我修复了这个问题,它与代码无关。它不是重复的,并且在尝试将映像添加到Eclipse目录时出现问题

删除图像前的斜杠。png:

更改此选项:

ImageIcon image=新的ImageIcon(this.getClass().getResource(“/image.png”)

通过此:


ImageIcon image=新的ImageIcon(this.getClass().getResource(“image.png”)

由于类已经在空包中,这没有什么区别。我已经解决了与代码无关的问题。我强烈建议将类放入包中,并将图像放入资源目录。@MLG HockeyPlayer:希望这个答案对主题有帮助:-)